summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--CHANGES2
-rw-r--r--lib/sqlalchemy/databases/sqlite.py9
-rw-r--r--test/sql/testtypes.py2
3 files changed, 8 insertions, 5 deletions
diff --git a/CHANGES b/CHANGES
index 927f9c095..eb5f10f3d 100644
--- a/CHANGES
+++ b/CHANGES
@@ -13,6 +13,8 @@
- Specific Databases:
- SQLite:
- sqlite boolean datatype converts False/True to 0/1 by default
+ - fixes to Date/Time (SLDate/SLTime) types; works as good as postgres
+ now [ticket:335]
- MS-SQL:
- fixes bug 261 (table reflection broken for MS-SQL case-sensitive
databases)
diff --git a/lib/sqlalchemy/databases/sqlite.py b/lib/sqlalchemy/databases/sqlite.py
index 378ec7cd9..3868f255f 100644
--- a/lib/sqlalchemy/databases/sqlite.py
+++ b/lib/sqlalchemy/databases/sqlite.py
@@ -51,24 +51,24 @@ class DateTimeMixin(object):
(value, microsecond) = (value, 0)
return time.strptime(value, fmt)[0:6] + (microsecond,)
-class SLDateTime(sqltypes.DateTime, DateTimeMixin):
+class SLDateTime(DateTimeMixin,sqltypes.DateTime):
def get_col_spec(self):
return "TIMESTAMP"
def convert_result_value(self, value, dialect):
tup = self._cvt(value, dialect, "%Y-%m-%d %H:%M:%S")
return tup and datetime.datetime(*tup)
-class SLDate(sqltypes.Date, DateTimeMixin):
+class SLDate(DateTimeMixin, sqltypes.Date):
def get_col_spec(self):
return "DATE"
def convert_result_value(self, value, dialect):
tup = self._cvt(value, dialect, "%Y-%m-%d")
return tup and datetime.date(*tup[0:3])
-class SLTime(sqltypes.Time, DateTimeMixin):
+class SLTime(DateTimeMixin, sqltypes.Time):
def get_col_spec(self):
return "TIME"
def convert_result_value(self, value, dialect):
tup = self._cvt(value, dialect, "%H:%M:%S")
- return tup and datetime.time(*tup[4:7])
+ return tup and datetime.time(*tup[3:7])
class SLText(sqltypes.TEXT):
def get_col_spec(self):
return "TEXT"
@@ -98,6 +98,7 @@ colspecs = {
sqltypes.Float : SLNumeric,
sqltypes.DateTime : SLDateTime,
sqltypes.Date : SLDate,
+ sqltypes.Time : SLTime,
sqltypes.String : SLString,
sqltypes.Binary : SLBinary,
sqltypes.Boolean : SLBoolean,
diff --git a/test/sql/testtypes.py b/test/sql/testtypes.py
index 9158f6a2c..e08bdb89f 100644
--- a/test/sql/testtypes.py
+++ b/test/sql/testtypes.py
@@ -241,7 +241,7 @@ class DateTest(AssertMixin):
collist = [Column('user_id', INT, primary_key = True), Column('user_name', VARCHAR(20)), Column('user_datetime', DateTime),
Column('user_date', DateTime)]
- elif db.engine.name == 'mysql' or db.engine.name == 'mssql' or db.engine.name == 'sqlite':
+ elif db.engine.name == 'mysql' or db.engine.name == 'mssql':
# these dont really support the TIME type at all
insert_data = [
[7, 'jack', datetime.datetime(2005, 11, 10, 0, 0), datetime.datetime(2005, 11, 10, 0, 0, 0)],