summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorEd Avis <eda@waniasset.com>2015-10-01 10:31:06 +0100
committerEd Avis <eda@waniasset.com>2015-10-01 10:31:06 +0100
commitcc32bd715e2d3b3bcd818084ccc5b5885775496a (patch)
treeac6cd998fcc74c47560d61eb4e4e76a1221762ae
parent7393ee8d4f20e84240623bb180681742813dd178 (diff)
downloadsqlalchemy-cc32bd715e2d3b3bcd818084ccc5b5885775496a.tar.gz
When regexp match fails, report the bad string and the regexp used.
-rw-r--r--lib/sqlalchemy/dialects/mssql/base.py16
1 files changed, 12 insertions, 4 deletions
diff --git a/lib/sqlalchemy/dialects/mssql/base.py b/lib/sqlalchemy/dialects/mssql/base.py
index e4f9ac3de..5c474aa6c 100644
--- a/lib/sqlalchemy/dialects/mssql/base.py
+++ b/lib/sqlalchemy/dialects/mssql/base.py
@@ -526,16 +526,20 @@ class _MSDate(sqltypes.Date):
return value
return process
- _reg = re.compile(r"(\d+)-(\d+)-(\d+)")
+ _reg_str = r"(\d+)-(\d+)-(\d+)"
+ _reg = re.compile(_reg_str)
def result_processor(self, dialect, coltype):
def process(value):
if isinstance(value, datetime.datetime):
return value.date()
elif isinstance(value, util.string_types):
+ m = self._reg.match(value)
+ if not m:
+ raise Exception("could not parse value {0} with MSDate regexp {1}".format(value, self._reg_str))
return datetime.date(*[
int(x or 0)
- for x in self._reg.match(value).groups()
+ for x in m.groups()
])
else:
return value
@@ -560,16 +564,20 @@ class TIME(sqltypes.TIME):
return value
return process
- _reg = re.compile(r"(\d+):(\d+):(\d+)(?:\.(\d{0,6}))?")
+ _reg_str = r"(\d+):(\d+):(\d+)(?:\.(\d{0,6}))?"
+ _reg = re.compile(_reg_str)
def result_processor(self, dialect, coltype):
def process(value):
if isinstance(value, datetime.datetime):
return value.time()
elif isinstance(value, util.string_types):
+ m = self._reg.match(value)
+ if not m:
+ raise Exception("could not parse value {0} with TIME regexp {1}".format(value, self._reg_str))
return datetime.time(*[
int(x or 0)
- for x in self._reg.match(value).groups()])
+ for x in m.groups()])
else:
return value
return process