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