From: Mike Bayer Date: Tue, 29 Nov 2005 06:52:16 +0000 (+0000) Subject: fix to result processing of date types X-Git-Tag: rel_0_1_0~286 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=93398271ed4368de08738951c7040b2c15d286ae;p=thirdparty%2Fsqlalchemy%2Fsqlalchemy.git fix to result processing of date types --- diff --git a/lib/sqlalchemy/databases/sqlite.py b/lib/sqlalchemy/databases/sqlite.py index 9e945227eb..de9acc17c1 100644 --- a/lib/sqlalchemy/databases/sqlite.py +++ b/lib/sqlalchemy/databases/sqlite.py @@ -38,8 +38,14 @@ class SLDateTime(sqltypes.DateTime): def get_col_spec(self): return "TIMESTAMP" def convert_result_value(self, value): - (value, microsecond) = value.split('.') - microsecond = int(microsecond) + if value is None: + return None + parts = value.split('.') + try: + (value, microsecond) = value.split('.') + microsecond = int(microsecond) + except ValueError: + (value, microsecond) = (value, 0) tup = time.strptime(value, "%Y-%m-%d %H:%M:%S") return datetime.datetime(microsecond=microsecond, *tup[0:6]) diff --git a/test/query.py b/test/query.py index f358795468..17a0ef248a 100644 --- a/test/query.py +++ b/test/query.py @@ -1,6 +1,6 @@ from testbase import PersistTest import testbase -import unittest, sys +import unittest, sys, datetime import sqlalchemy.databases.sqlite as sqllite @@ -34,6 +34,23 @@ class QueryTest(PersistTest): self.users.update(self.users.c.user_id == 7).execute(user_name = 'fred') print repr(self.users.select().execute().fetchall()) + def testselectdate(self): + users_with_date = Table('query_users_with_date', db, + Column('user_id', INT, primary_key = True), + Column('user_name', VARCHAR(20)), + Column('user_date', DateTime), + redefine = True + ) + users_with_date.create() + + c = db.connection() + users_with_date.insert().execute(user_id = 7, user_name = 'jack', user_date=datetime.datetime(2005,11,10)) + users_with_date.insert().execute(user_id = 8, user_name = 'roy', user_date=datetime.datetime(2005,11,10, 11,52,35)) + users_with_date.insert().execute(user_id = 9, user_name = 'foo', user_date=datetime.datetime(2005,11,10, 11,52,35, 54839)) + users_with_date.insert().execute(user_id = 10, user_name = 'colber', user_date=None) + print repr(users_with_date.select().execute().fetchall()) + users_with_date.drop() + def testdelete(self): c = db.connection()