From: Mike Bayer Date: Fri, 20 Oct 2006 20:49:16 +0000 (+0000) Subject: fixed pg reflection of timezones X-Git-Tag: rel_0_3_0~21 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=892a1ebcb8f9fdecaf38b1725175d52c7b245a16;p=thirdparty%2Fsqlalchemy%2Fsqlalchemy.git fixed pg reflection of timezones --- diff --git a/lib/sqlalchemy/databases/postgres.py b/lib/sqlalchemy/databases/postgres.py index dad2d3bff2..93a2cf8643 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 fa0cb4245a..6c367159b4 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)