diff options
author | Mike Bayer <mike_mp@zzzcomputing.com> | 2013-07-12 21:52:54 -0400 |
---|---|---|
committer | Mike Bayer <mike_mp@zzzcomputing.com> | 2013-07-12 21:52:54 -0400 |
commit | 63488b2d1ea47d30db23e3e5659917fcb4ad027a (patch) | |
tree | 4d15edf3bdf59d7c356cea084fdbd8f51ad2184e /test/dialect/test_sqlite.py | |
parent | d08a6d291d08e416853503f2f8cc19a5301a4b6b (diff) | |
download | sqlalchemy-63488b2d1ea47d30db23e3e5659917fcb4ad027a.tar.gz |
The newly added SQLite DATETIME arguments storage_format and
regexp apparently were not fully implemented correctly; while the
arguments were accepted, in practice they would have no effect;
this has been fixed. Also in 0.8.3.
[ticket:2781]
Diffstat (limited to 'test/dialect/test_sqlite.py')
-rw-r--r-- | test/dialect/test_sqlite.py | 47 |
1 files changed, 46 insertions, 1 deletions
diff --git a/test/dialect/test_sqlite.py b/test/dialect/test_sqlite.py index d75211a71..1b424e6c8 100644 --- a/test/dialect/test_sqlite.py +++ b/test/dialect/test_sqlite.py @@ -96,6 +96,52 @@ class TestTypes(fixtures.TestBase, AssertsExecutionResults): t.drop(engine) engine.dispose() + @testing.provide_metadata + def test_custom_datetime(self): + sqlite_date = sqlite.DATETIME( + # 2004-05-21T00:00:00 + storage_format="%(year)04d-%(month)02d-%(day)02d" + "T%(hour)02d:%(minute)02d:%(second)02d", + regexp=r"(\d+)-(\d+)-(\d+)T(\d+):(\d+):(\d+)", + ) + t = Table('t', self.metadata, Column('d', sqlite_date)) + self.metadata.create_all(testing.db) + testing.db.execute(t.insert(). + values(d=datetime.datetime(2010, 10, 15, 12, 37, 0))) + testing.db.execute("insert into t (d) values ('2004-05-21T00:00:00')") + eq_( + testing.db.execute("select * from t order by d").fetchall(), + [(u'2004-05-21T00:00:00',), (u'2010-10-15T12:37:00',)] + ) + eq_( + testing.db.execute(select([t.c.d]).order_by(t.c.d)).fetchall(), + [(datetime.datetime(2004, 5, 21, 0, 0),), + (datetime.datetime(2010, 10, 15, 12, 37),)] + ) + + @testing.provide_metadata + def test_custom_date(self): + sqlite_date = sqlite.DATE( + # 2004-05-21T00:00:00 + storage_format="%(year)04d|%(month)02d|%(day)02d", + regexp=r"(\d+)\|(\d+)\|(\d+)", + ) + t = Table('t', self.metadata, Column('d', sqlite_date)) + self.metadata.create_all(testing.db) + testing.db.execute(t.insert(). + values(d=datetime.date(2010, 10, 15))) + testing.db.execute("insert into t (d) values ('2004|05|21')") + eq_( + testing.db.execute("select * from t order by d").fetchall(), + [(u'2004|05|21',), (u'2010|10|15',)] + ) + eq_( + testing.db.execute(select([t.c.d]).order_by(t.c.d)).fetchall(), + [(datetime.date(2004, 5, 21),), + (datetime.date(2010, 10, 15),)] + ) + + def test_no_convert_unicode(self): """test no utf-8 encoding occurs""" @@ -221,7 +267,6 @@ class DateTimeTest(fixtures.TestBase, AssertsCompiledSQL): rp = sldt.result_processor(None, None) eq_(rp(bp(dt)), dt) - class DateTest(fixtures.TestBase, AssertsCompiledSQL): def test_default(self): |