From e7e60c05c0dc5f6ee7f51a829c2e0635a26d95af Mon Sep 17 00:00:00 2001 From: Mike Bayer Date: Wed, 9 Jul 2008 16:15:14 +0000 Subject: - SQLite Date, DateTime, and Time types only accept Python datetime objects now, not strings. If you'd like to format dates as strings yourself with SQLite, use a String type. If you'd like them to return datetime objects anyway despite their accepting strings as input, make a TypeDecorator around String - SQLA doesn't encourage this pattern. --- lib/sqlalchemy/databases/sqlite.py | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) (limited to 'lib/sqlalchemy/databases/sqlite.py') diff --git a/lib/sqlalchemy/databases/sqlite.py b/lib/sqlalchemy/databases/sqlite.py index 620713fe1..26f1ecb91 100644 --- a/lib/sqlalchemy/databases/sqlite.py +++ b/lib/sqlalchemy/databases/sqlite.py @@ -12,7 +12,7 @@ from sqlalchemy.engine import default import sqlalchemy.types as sqltypes import sqlalchemy.util as util from sqlalchemy.sql import compiler, functions as sql_functions - +from types import NoneType SELECT_REGEXP = re.compile(r'\s*(?:SELECT|PRAGMA)', re.I | re.UNICODE) @@ -59,9 +59,8 @@ class DateTimeMixin(object): def bind_processor(self, dialect): def process(value): - if isinstance(value, basestring): - # pass string values thru - return value + if not isinstance(value, (NoneType, datetime.date, datetime.datetime, datetime.time)): + raise TypeError("SQLite Date, Time, and DateTime types only accept Python datetime objects as input.r") elif value is not None: if self.__microsecond__ and getattr(value, 'microsecond', None) is not None: if self.__legacy_microseconds__: -- cgit v1.2.1