diff options
author | Ed Avis <eda@waniasset.com> | 2015-10-01 10:31:06 +0100 |
---|---|---|
committer | Ed Avis <eda@waniasset.com> | 2015-10-01 10:31:06 +0100 |
commit | cc32bd715e2d3b3bcd818084ccc5b5885775496a (patch) | |
tree | ac6cd998fcc74c47560d61eb4e4e76a1221762ae | |
parent | 7393ee8d4f20e84240623bb180681742813dd178 (diff) | |
download | sqlalchemy-cc32bd715e2d3b3bcd818084ccc5b5885775496a.tar.gz |
When regexp match fails, report the bad string and the regexp used.
-rw-r--r-- | lib/sqlalchemy/dialects/mssql/base.py | 16 |
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 |