summaryrefslogtreecommitdiff
path: root/lib/sqlalchemy/databases/postgres.py
diff options
context:
space:
mode:
authorMike Bayer <mike_mp@zzzcomputing.com>2006-04-11 16:58:15 +0000
committerMike Bayer <mike_mp@zzzcomputing.com>2006-04-11 16:58:15 +0000
commit3b2e08de29899f684222f5541fee4130ea491eff (patch)
treeb07253ed921c5a99ee21d7a1b5bf47c05d19545b /lib/sqlalchemy/databases/postgres.py
parentf5e54c7a0a76faf8045b2582a0be197642b0cf07 (diff)
downloadsqlalchemy-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.py27
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):