diff options
author | Jason Kirtland <jek@discorporate.us> | 2007-09-10 22:32:11 +0000 |
---|---|---|
committer | Jason Kirtland <jek@discorporate.us> | 2007-09-10 22:32:11 +0000 |
commit | 3917a84f005a23e5bea618c520ad6fd0617139da (patch) | |
tree | a88e31dc05a86350c6bf5f4eefa2042497dc15e5 | |
parent | 2c48e9949d5f8ecc2e178e3c278f7a27ab7af997 (diff) | |
download | sqlalchemy-3917a84f005a23e5bea618c520ad6fd0617139da.tar.gz |
added support for string date passthru in sqlite (merge of r3322 from trunk)
-rw-r--r-- | CHANGES | 2 | ||||
-rw-r--r-- | lib/sqlalchemy/databases/sqlite.py | 5 | ||||
-rw-r--r-- | test/sql/testtypes.py | 17 |
3 files changed, 23 insertions, 1 deletions
@@ -34,6 +34,8 @@ unconditionally quoted, so that schema names which need quoting are fine. its slightly unnecessary for schema names which don't need quoting but not harmful. +- sqlite + - passthrough for stringified dates 0.3.10 - general diff --git a/lib/sqlalchemy/databases/sqlite.py b/lib/sqlalchemy/databases/sqlite.py index 816b1b76a..965799a22 100644 --- a/lib/sqlalchemy/databases/sqlite.py +++ b/lib/sqlalchemy/databases/sqlite.py @@ -31,7 +31,10 @@ class SLSmallInteger(sqltypes.Smallinteger): class DateTimeMixin(object): def convert_bind_param(self, value, dialect): - 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 00f382e20..46069013e 100644 --- a/test/sql/testtypes.py +++ b/test/sql/testtypes.py @@ -336,6 +336,23 @@ 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)) + @testbase.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 = db.text("select user_datetime from query_users_with_date", typemap={'user_datetime':DateTime}).execute().fetchall() |