Access 97 Dates using ODBC
Robin Munn
rmunn at pobox.com
Fri Feb 28 13:54:15 EST 2003
Cy Edmunds <cedmunds at spamless.rochester.rr.com> wrote:
> Consider the following code:
>
> import dbi, odbc
> import time
>
> dbc = odbc.odbc('sample')
> crsr = dbc.cursor()
> crsr.execute('SELECT insert_change_date FROM country')
> result = crsr.fetchone()
> print str(result[0])
>
> Using Access 2000 it prints out:
>
> Wed Feb 12 00:00:00 1997
>
> which is in fact what is stored in the database. However with
> Access 97 it raises an exception. (The exact wording of the
> exception I can't recall -- this happens at work and I am now
> at home. But the gist of it is that the object doesn't support
> the str() operation.)
>
> Has anybody seen this problem before? Do you have a
> workaround?
I've never dealt with this problem before and so cannot suggest a
workaround, but I can suggest an approach to get some more information,
which might lead to figuring out a workaround. Try printing the type of
the returned object, and its class (if it has one):
import dbi, odbc
import time
dbc = odbc.odbc('sample')
crsr = dbc.cursor()
crsr.execute('SELECT insert_change_date FROM country')
result = crsr.fetchone()
print type(result[0])
try:
print result[0].__class__
except AttributeError:
print "Not a class instance"
print str(result[0])
Depending on what type of object is being returned, this may help.
Also, you might consider using Marc-André Lemburg's mxODBC package. It's
free for non-commercial use (which I believe would include open-source
development, although you'd have to ask Marc-André to be certain). It
uses mxDateTime objects for returning dates, which might take care of
the problem you're encoutering.
Let us know what you find out.
--
Robin Munn <rmunn at pobox.com>
http://www.rmunn.com/
PGP key ID: 0x6AFB6838 50FF 2478 CFFB 081A 8338 54F7 845D ACFD 6AFB 6838
More information about the Python-list
mailing list