From: Mike Bayer Date: Thu, 16 Aug 2007 14:48:48 +0000 (+0000) Subject: added support for string date passthru in sqlite X-Git-Tag: rel_0_4beta3~3 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=dd99a207d6a4e79c4526fe40df2f63864c764704;p=thirdparty%2Fsqlalchemy%2Fsqlalchemy.git added support for string date passthru in sqlite --- diff --git a/lib/sqlalchemy/databases/sqlite.py b/lib/sqlalchemy/databases/sqlite.py index 3cc821a360..d96422236f 100644 --- a/lib/sqlalchemy/databases/sqlite.py +++ b/lib/sqlalchemy/databases/sqlite.py @@ -34,7 +34,10 @@ class SLSmallInteger(sqltypes.Smallinteger): class DateTimeMixin(object): def bind_processor(self, dialect): def process(value): - if value is not None: + if isinstance(value, basestring): + # pass string values thru + return value + elif value is not None: if getattr(value, 'microsecond', None) is not None: return value.strftime(self.__format__ + "." + str(value.microsecond)) else: diff --git a/test/sql/testtypes.py b/test/sql/testtypes.py index d917b4a18c..fcec3d9c4e 100644 --- a/test/sql/testtypes.py +++ b/test/sql/testtypes.py @@ -347,7 +347,26 @@ class DateTest(AssertMixin): l = map(list, users_with_date.select().execute().fetchall()) self.assert_(l == insert_data, 'DateTest mismatch: got:%s expected:%s' % (l, insert_data)) + @testing.supported('sqlite') + def test_sqlite_date(self): + meta = MetaData(testbase.db) + t = Table('testdate', meta, + Column('id', Integer, primary_key=True), + Column('adate', Date), + Column('adatetime', DateTime)) + t.create(checkfirst=True) + try: + d1 = datetime.date(2007, 10, 30) + d2 = datetime.datetime(2007, 10, 30) + t.insert().execute(adate=str(d1), adatetime=str(d2)) + + assert t.select().execute().fetchall()[0] == (1, datetime.date(2007, 10, 30), datetime.datetime(2007, 10, 30)) + + finally: + t.drop(checkfirst=True) + + def testtextdate(self): x = testbase.db.text("select user_datetime from query_users_with_date", typemap={'user_datetime':DateTime}).execute().fetchall()