]> git.ipfire.org Git - thirdparty/sqlalchemy/sqlalchemy.git/commitdiff
fix to result processing of date types
authorMike Bayer <mike_mp@zzzcomputing.com>
Tue, 29 Nov 2005 06:52:16 +0000 (06:52 +0000)
committerMike Bayer <mike_mp@zzzcomputing.com>
Tue, 29 Nov 2005 06:52:16 +0000 (06:52 +0000)
lib/sqlalchemy/databases/sqlite.py
test/query.py

index 9e945227ebd83fc535dccbe4c9cd6946961f6a51..de9acc17c13ca96d0051943288699490d507c8f0 100644 (file)
@@ -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])
 
index f35879546815390c995ee4fc933afb6d6433eaab..17a0ef248abde0794614aba94782d3506c91ba64 100644 (file)
@@ -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()