psycopg2: parsing timestamps with odd time zones
Karsten Hilbert <[email protected]> Wed, 19 May 2010 15:36:42 +0200
| Newsgroups | gmane.comp.python.db.psycopg.devel,gmane.comp.gnu.medical.devel |
|---|---|
| Message-ID | <[email protected]> |
Hello all,
apparently, the exception thrown by Python when failing to
parse time zones with seconds in them has changed. It used
to be
"DataError: unable to parse time"
but now is the more specific:
"ValueError: time zone offset XXXX is not a whole number of minutes"
To fix that we need to (re-)place this code in extras.py:
# safe management of times with a non-standard time zone
def _convert_tstz_w_secs(s, cursor):
try:
print s
return DATETIME(s, cursor)
except (DataError, ), exc:
if exc.message != "unable to parse time":
raise
if regex.match('(\+|-)\d\d:\d\d:\d\d', s[-9:]) is None:
raise
except (ValueError, ), exc:
if "time zone offset" not in exc.message:
raise
if "is not a whole number of minutes" not in exc.message:
raise
if regex.match('(\+|-)\d\d:\d\d:\d\d', s[-9:]) is None:
raise
# parsing doesn't succeed even if seconds are ":00" so truncate in any case
return DATETIME(s[:-3], cursor)
Thanks,
Karsten
--
GPG key ID E4071346 @ wwwkeys.pgp.net
E167 67FD A291 2BEA 73BD 4537 78B9 A9F9 E407 1346