summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJason Kirtland <jek@discorporate.us>2007-09-10 22:32:11 +0000
committerJason Kirtland <jek@discorporate.us>2007-09-10 22:32:11 +0000
commit3917a84f005a23e5bea618c520ad6fd0617139da (patch)
treea88e31dc05a86350c6bf5f4eefa2042497dc15e5
parent2c48e9949d5f8ecc2e178e3c278f7a27ab7af997 (diff)
downloadsqlalchemy-3917a84f005a23e5bea618c520ad6fd0617139da.tar.gz
added support for string date passthru in sqlite (merge of r3322 from trunk)
-rw-r--r--CHANGES2
-rw-r--r--lib/sqlalchemy/databases/sqlite.py5
-rw-r--r--test/sql/testtypes.py17
3 files changed, 23 insertions, 1 deletions
diff --git a/CHANGES b/CHANGES
index ef50caf4e..3379008b2 100644
--- a/CHANGES
+++ b/CHANGES
@@ -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()