summaryrefslogtreecommitdiff
path: root/lib/sqlalchemy/databases/sqlite.py
diff options
context:
space:
mode:
authorMike Bayer <mike_mp@zzzcomputing.com>2008-09-19 23:05:25 +0000
committerMike Bayer <mike_mp@zzzcomputing.com>2008-09-19 23:05:25 +0000
commita964a42000da75d824331c002bf76414f187fd08 (patch)
tree44b6ab9a4fa071656adca653ae487ce8147bcc1f /lib/sqlalchemy/databases/sqlite.py
parent8d2fd5f87aaf837042d2dc5e692f84deb7dd1710 (diff)
downloadsqlalchemy-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.py31
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):