diff options
author | Mike Bayer <mike_mp@zzzcomputing.com> | 2008-09-19 23:05:25 +0000 |
---|---|---|
committer | Mike Bayer <mike_mp@zzzcomputing.com> | 2008-09-19 23:05:25 +0000 |
commit | a964a42000da75d824331c002bf76414f187fd08 (patch) | |
tree | 44b6ab9a4fa071656adca653ae487ce8147bcc1f /lib/sqlalchemy/databases/sqlite.py | |
parent | 8d2fd5f87aaf837042d2dc5e692f84deb7dd1710 (diff) | |
download | sqlalchemy-a964a42000da75d824331c002bf76414f187fd08.tar.gz |
genericized the relationship between bind_processor() and _bind_processor() a little more
Diffstat (limited to 'lib/sqlalchemy/databases/sqlite.py')
-rw-r--r-- | lib/sqlalchemy/databases/sqlite.py | 31 |
1 files changed, 22 insertions, 9 deletions
diff --git a/lib/sqlalchemy/databases/sqlite.py b/lib/sqlalchemy/databases/sqlite.py index 1486c9f36..6689db8f1 100644 --- a/lib/sqlalchemy/databases/sqlite.py +++ b/lib/sqlalchemy/databases/sqlite.py @@ -54,14 +54,12 @@ class SLSmallInteger(sqltypes.Smallinteger): return "SMALLINT" class DateTimeMixin(object): - def _bind_processor(self, format, element_range): - elem = ("year", "month", "day", "hour", - "minute", "second", "microsecond")[element_range[0]:element_range[1]] + def _bind_processor(self, format, elements): def process(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.") elif value is not None: - return format % tuple([getattr(value, attr, 0) for attr in elem]) + return format % tuple([getattr(value, attr, 0) for attr in elements]) else: return None return process @@ -82,9 +80,15 @@ class SLDateTime(DateTimeMixin, sqltypes.DateTime): def bind_processor(self, dialect): if self.__legacy_microseconds__: - return self._bind_processor("%4.4d-%2.2d-%2.2d %2.2d:%2.2d:%2.2d.%s", (0, 7)) + return self._bind_processor( + "%4.4d-%2.2d-%2.2d %2.2d:%2.2d:%2.2d.%s", + ("year", "month", "day", "hour", "minute", "second", "microsecond") + ) else: - return self._bind_processor("%4.4d-%2.2d-%2.2d %2.2d:%2.2d:%2.2d.%06d", (0, 7)) + return self._bind_processor( + "%4.4d-%2.2d-%2.2d %2.2d:%2.2d:%2.2d.%06d", + ("year", "month", "day", "hour", "minute", "second", "microsecond") + ) _reg = re.compile(r"(\d+)-(\d+)-(\d+)(?: (\d+):(\d+):(\d+)(?:\.(\d+))?)?") def result_processor(self, dialect): @@ -95,7 +99,10 @@ class SLDate(DateTimeMixin, sqltypes.Date): return "DATE" def bind_processor(self, dialect): - return self._bind_processor("%4.4d-%2.2d-%2.2d", (0, 3)) + return self._bind_processor( + "%4.4d-%2.2d-%2.2d", + ("year", "month", "day") + ) _reg = re.compile(r"(\d+)-(\d+)-(\d+)") def result_processor(self, dialect): @@ -109,9 +116,15 @@ class SLTime(DateTimeMixin, sqltypes.Time): def bind_processor(self, dialect): if self.__legacy_microseconds__: - return self._bind_processor("%2.2d:%2.2d:%2.2d.%s", (3, 7)) + return self._bind_processor( + "%2.2d:%2.2d:%2.2d.%s", + ("hour", "minute", "second", "microsecond") + ) else: - return self._bind_processor("%2.2d:%2.2d:%2.2d.%06d", (3, 7)) + return self._bind_processor( + "%2.2d:%2.2d:%2.2d.%06d", + ("hour", "minute", "second", "microsecond") + ) _reg = re.compile(r"(\d+):(\d+):(\d+)(?:\.(\d+))?") def result_processor(self, dialect): |