To try an see if the sqlalchemy datetime was causing the problem,
I changed this session variable to a string.  When I did this, the
problem
appeared to be gone, indicating that this is  the cuprit.

Next I called the routine by hand that gives the datetime, and played
with it a bit:

>>> from hubDatView import *
>>> mydatetime = getHubIndexUpdateDate(0)
>>> mydatetime
datetime.datetime(2007, 3, 3, 10, 51, 36,
tzinfo=<psycopg2.tz.FixedOffsetTimezone object at 0xb7770f4c>)
>>> import pickle
>>> pickle.dumps(mydatetime)
"cdatetime\ndatetime\np0\n(S'\\x07\\xd7\\x03\\x03\\n3$\\x00\\x00\
\x00'\np1\ncpsycopg2.tz\nFixedOffsetTimezone
\np2\n(tRp3\n(dp4\nS'_offset'\np5\ncdatetime\ntimedelta
\np6\n(I-1\nI68400\nI0\ntp7\nRp8\nsbtp9\nRp10\n."
>>> pickle.loads("cdatetime\ndatetime\np0\n(S'\\x07\\xd7\\x03\\x03\\n3$\\x00\\x00\\x00'\np1\ncpsycopg2.tz\nFixedOffsetTimezone\np2\n(tRp3\n(dp4\nS'_offset'\np5\ncdatetime\ntimedelta\np6\n(I-1\nI68400\nI0\ntp7\nRp8\nsbtp9\nRp10\n.")
datetime.datetime(2007, 3, 3, 10, 51, 36,
tzinfo=<psycopg2.tz.FixedOffsetTimezone object at 0xb7776fec>)
>>> mydatetime.tzinfo
<psycopg2.tz.FixedOffsetTimezone object at 0xb7770f4c>
>>> dir(mydatetime.tzinfo)
['__class__', '__delattr__', '__dict__', '__doc__',
'__getattribute__', '__hash__', '__init__', '__module__', '__new__',
'__reduce__', '__reduce_ex__', '__repr__', '__setattr__', '__str__',
'__weakref__', '_name', '_offset', 'dst', 'fromutc', 'tzname',
'utcoffset']


I was trying to see if I could pickle and unpickle the datatime that I
appear to have problems with, and to see if the tzinfo object had
and __init__ method since the documentation mentioned in this
discussion says that it must in order to successfully pickle and un-
pickle.
It appears to.

Not sure why this works, if this is the problem. Perhaps I will try
with cPickle next.


On Apr 5, 5:20 pm, "paceman" <[EMAIL PROTECTED]> wrote:
> Jeremy,
>
> Thank-you for some more good tips.
> The end of the error message is:
>
> > > Can't pickle : it's not the same object as
> > > psycopg2.tz.FixedOffsetTimezone
>
> I am pretty sure there is nothing after that.
>
> I will check into the sqlalchemy datetime wrt pickling.  The error
> appears to occur 50% of the time, but maybe the session
> only gets pickled 50% of the time, and the pickling is failing all the
> time.  If it is expecting a psycopg2 datetime, but I am providing
> a sqlalchemy datetime - don't know why it would be expecting the
> psycopg datetime in the first place.
>
> Thank-you for straightening me out on my misinterpretation of the
> trace.  I see what you mean.  I may temporarily remove
> the update_date and see if the problem goes away - an confirmation
> that this is where the problem is.
>
> On Apr 5, 3:59 pm, "Jeremy Dunck" <[EMAIL PROTECTED]> wrote:
>
> > On 4/5/07, paceman <[EMAIL PROTECTED]> wrote:
>
> > > One is an update_date
> > > that comes from
> > > a postgresql database
>
> > Yes, the original error reported is:
>
> > > > "/var/lib/python-support/python2.4/django/contrib/sessions/models.py",
> > > > line 10, in encode pickled = pickle.dumps(session_dict) PicklingError:
> > > > Can't pickle : it's not the same object as
> > > > psycopg2.tz.FixedOffsetTimezone
>
> > Which suggests that it has something to do with psycopg2. :)
> > Unfortunately, it looks like part of your error message was eaten.
> > There should be something just after "Can't pickle".  Can you send
> > that again?
>
> > Anyway, the datetimes returned by psycopg2 are a subclass defined in
> > psycopg2.  The python docs actually have a specific admonition about
> > pickling tzinfo:http://www.python.org/doc/2.3.5/lib/datetime-tzinfo.html
>
> > psycopg2's tzinfo subclass implements this.
>
> > Is it possible that the tzinfo attached to the datetime you're storing
> > in the session is not picklable?
>
> > >>> import psycopg2
> > >>> c=psycopg2.connect("dbname=sekrit")
> > >>> cur = c.cursor()
> > >>> cur.execute('select current_timestamp')
> > >>> r = cur.fet
> > >>> r = cur.fetchone()
> > >>> r
>
> > (datetime.datetime(2007, 4, 5, 14, 46, 57, 754021,
> > tzinfo=<psycopg2.tz.FixedOffsetTimezone object at 0xb776bfcc>),)
>
> > >>> import pickle
> > >>> pickle.dumps(r)
>
> > "(cdatetime\ndatetime\np0\n(S'\\x07\\xd7\\x04\\x05\\x0e.9\\x0b\\x81e'\np1\ncpsycopg2.tz\nFixedOffsetTimezone\np2\n(tRp3\n(dp4\nS'_offset'\np5\ncdatetime\ntimedelta\np6\n(I-1\nI68400\nI0\ntp7\nRp8\nsbtp9\nRp10\ntp11\n."
>
> > > What throws me off, is the pickling error seems to be complaining
> > > about the Session cookie name which
> > > is a datetime that django takes care of - not me.
>
> > No, that's one line in the stack trace, but it's not the line with the
> > error.  That line forces pickling of the session object, which is
> > where the problem is. It has nothing to do with the cookie.  :)
>
> > > I thought I was using straightforward django technique, except for
> > > using sqlalchemy to access
> > > my database tables.
>
> > Hmm, I have no idea how SQLAlchemy is constructing its datetime
> > instances. It would probably be worth looking at, since using
> > SQLAlchemy is probably fairly unusual with Django+psycopg2.
>
> >   -Jeremy


--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups 
"Django users" group.
To post to this group, send email to django-users@googlegroups.com
To unsubscribe from this group, send email to [EMAIL PROTECTED]
For more options, visit this group at 
http://groups.google.com/group/django-users?hl=en
-~----------~----~----~----~------~----~------~--~---

Reply via email to