summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMike Bayer <mike_mp@zzzcomputing.com>2006-10-20 20:49:16 +0000
committerMike Bayer <mike_mp@zzzcomputing.com>2006-10-20 20:49:16 +0000
commit892a1ebcb8f9fdecaf38b1725175d52c7b245a16 (patch)
tree5a81492c0f4d3e6c44b2f62c745e7e51c688f927
parent705ee2cfa36b589b7cf8c5bb510d3211013acc8e (diff)
downloadsqlalchemy-892a1ebcb8f9fdecaf38b1725175d52c7b245a16.tar.gz
fixed pg reflection of timezones
-rw-r--r--lib/sqlalchemy/databases/postgres.py10
-rw-r--r--test/engine/reflection.py19
2 files changed, 26 insertions, 3 deletions
diff --git a/lib/sqlalchemy/databases/postgres.py b/lib/sqlalchemy/databases/postgres.py
index dad2d3bff..93a2cf864 100644
--- a/lib/sqlalchemy/databases/postgres.py
+++ b/lib/sqlalchemy/databases/postgres.py
@@ -359,14 +359,20 @@ class PGDialect(ansisql.ANSIDialect):
if attype == 'integer':
numericprec, numericscale = (32, 0)
charlen = None
-
+
args = []
for a in (charlen, numericprec, numericscale):
if a is not None:
args.append(int(a))
+
+ kwargs = {}
+ if attype == 'timestamp with time zone':
+ kwargs['timezone'] = True
+ elif attype == 'timestamp without time zone':
+ kwargs['timezone'] = False
coltype = ischema_names[attype]
- coltype = coltype(*args)
+ coltype = coltype(*args, **kwargs)
colargs= []
if default is not None:
colargs.append(PassiveDefault(sql.text(default)))
diff --git a/test/engine/reflection.py b/test/engine/reflection.py
index fa0cb4245..6c367159b 100644
--- a/test/engine/reflection.py
+++ b/test/engine/reflection.py
@@ -97,7 +97,24 @@ class ReflectionTest(PersistTest):
finally:
addresses.drop()
users.drop()
-
+
+ @testbase.supported('postgres')
+ def testpgdates(self):
+ m1 = BoundMetaData(testbase.db)
+ t1 = Table('pgdate', m1,
+ Column('date1', DateTime(timezone=True)),
+ Column('date2', DateTime(timezone=False))
+ )
+ m1.create_all()
+ try:
+ m2 = BoundMetaData(testbase.db)
+ t2 = Table('pgdate', m2, autoload=True)
+ assert t2.c.date1.type.timezone is True
+ assert t2.c.date2.type.timezone is False
+ finally:
+ m1.drop_all()
+
+
def testoverridecolumns(self):
"""test that you can override columns which contain foreign keys to other reflected tables"""
meta = BoundMetaData(testbase.db)