diff options
author | Mike Bayer <mike_mp@zzzcomputing.com> | 2006-04-11 16:58:15 +0000 |
---|---|---|
committer | Mike Bayer <mike_mp@zzzcomputing.com> | 2006-04-11 16:58:15 +0000 |
commit | 3b2e08de29899f684222f5541fee4130ea491eff (patch) | |
tree | b07253ed921c5a99ee21d7a1b5bf47c05d19545b /lib/sqlalchemy/databases/postgres.py | |
parent | f5e54c7a0a76faf8045b2582a0be197642b0cf07 (diff) | |
download | sqlalchemy-3b2e08de29899f684222f5541fee4130ea491eff.tar.gz |
added patch for mxDateTime support, [ticket:5], courtesy jkakar@kakar.ca
Diffstat (limited to 'lib/sqlalchemy/databases/postgres.py')
-rw-r--r-- | lib/sqlalchemy/databases/postgres.py | 27 |
1 files changed, 22 insertions, 5 deletions
diff --git a/lib/sqlalchemy/databases/postgres.py b/lib/sqlalchemy/databases/postgres.py index a7285b4b5..8a063ca06 100644 --- a/lib/sqlalchemy/databases/postgres.py +++ b/lib/sqlalchemy/databases/postgres.py @@ -4,7 +4,7 @@ # This module is part of SQLAlchemy and is released under # the MIT License: http://www.opensource.org/licenses/mit-license.php -import sys, StringIO, string, types, re +import datetime, sys, StringIO, string, types, re import sqlalchemy.util as util import sqlalchemy.sql as sql @@ -17,6 +17,11 @@ from sqlalchemy import * import information_schema as ischema try: + import mx.DateTime.DateTime as mxDateTime +except: + mxDateTime = None + +try: import psycopg2 as psycopg #import psycopg2.psycopg1 as psycopg except: @@ -43,15 +48,27 @@ class PG2DateTime(sqltypes.DateTime): return "TIMESTAMP" class PG1DateTime(sqltypes.DateTime): def convert_bind_param(self, value, engine): - # TODO: perform appropriate postgres1 conversion between Python DateTime/MXDateTime - # this one doesnt seem to work with the "emulation" mode if value is not None: + if isinstance(value, datetime.datetime): + seconds = float(str(value.second) + "." + + str(value.microsecond)) + mx_datetime = mxDateTime(value.year, value.month, value.day, + value.hour, value.minute, + seconds) + return psycopg.TimestampFromMx(mx_datetime) return psycopg.TimestampFromMx(value) else: return None def convert_result_value(self, value, engine): - # TODO: perform appropriate postgres1 conversion between Python DateTime/MXDateTime - return value + if value is None: + return None + second_parts = str(value.second).split(".") + seconds = int(second_parts[0]) + microseconds = int(second_parts[1]) + return datetime.datetime(value.year, value.month, value.day, + value.hour, value.minute, seconds, + microseconds) + def get_col_spec(self): return "TIMESTAMP" class PG2Date(sqltypes.Date): |