Problem with plpython

Started by Steve Ericksonover 16 years ago2 messagesgeneral
Jump to latest
#1Steve Erickson
serickson@digitiliti.com

I'm running PostgreSQL 8.3 with pl/python 8.3. I am getting a different
date/time format when executing the below examples. The results are the
same whether I use os.popen or os.system. In plpython, I run:
import os
cmd = 'ls -al /var/log/messages > /var/tmp/log'
x = os.popen(cmd)
for aline in x.readlines():
plpy.notice('aline = %s', aline)

and the contents of /var/tmp/log are "-rw-r----- 1 syslog adm 495523 Oct 30
11:52 /var/log/messages

When, within Python, I run:

cmd = 'ls -al /var/log/messages > /var/tmp/log'
x = os.popen(cmd)
for aline in x.readlines():

... print aline

the contents of /var/tmp/log are "-rw-r----- 1 syslog adm 23591 2009-10-30
13:03 /var/log/messages

How, using plpython, can I get the output date/time in the same format as
when executing from within python itself?

#2Justin Pasher
justinp@newmediagateway.com
In reply to: Steve Erickson (#1)
Re: Problem with plpython

Steve Erickson wrote:

I'm running PostgreSQL 8.3 with pl/python 8.3. I am getting a
different date/time format when executing the below examples. The
results are the same whether I use os.popen or os.system. In
plpython, I run:
import os
cmd = 'ls -al /var/log/messages > /var/tmp/log'
x = os.popen(cmd)
for aline in x.readlines():
plpy.notice('aline = %s', aline)

and the contents of /var/tmp/log are "-rw-r----- 1 syslog adm 495523
Oct 30 11:52 /var/log/messages

When, within Python, I run:

cmd = 'ls -al /var/log/messages > /var/tmp/log'
x = os.popen(cmd)
for aline in x.readlines():

... print aline

the contents of /var/tmp/log are "-rw-r----- 1 syslog adm 23591
2009-10-30 13:03 /var/log/messages

How, using plpython, can I get the output date/time in the same format
as when executing from within python itself?

Different locale settings will produce different formatting for the ls
command. For example...

[justinp@justinp /tmp/test]$ LANG=en_US.UTF-8 ls -l
total 0
-rw-rw-r-- 1 justinp justinp 0 2009-10-30 17:32 aa
-rw-rw-r-- 1 justinp justinp 0 2009-10-30 17:32 bb
-rw-rw-r-- 1 justinp justinp 0 2009-10-30 17:32 cc

[justinp@justinp /tmp/test]$ LANG=C ls -l
total 0
-rw-rw-r-- 1 justinp justinp 0 Oct 30 17:32 aa
-rw-rw-r-- 1 justinp justinp 0 Oct 30 17:32 bb
-rw-rw-r-- 1 justinp justinp 0 Oct 30 17:32 cc

It seems to me that you can just override the LANG variable directly in
your call to ls, since it's just running a shell command.

--
Justin Pasher