summaryrefslogtreecommitdiff
path: root/lib
diff options
context:
space:
mode:
authorMike Bayer <mike_mp@zzzcomputing.com>2010-03-19 18:10:53 -0400
committerMike Bayer <mike_mp@zzzcomputing.com>2010-03-19 18:10:53 -0400
commitcdda68aea3b392670ced210130fd64d7e1598d79 (patch)
tree9e71718bef5e737a2b713be1fb88045b7d66b025 /lib
parent2438b38881a057015675d4b20ec894d4d6018e61 (diff)
downloadsqlalchemy-cdda68aea3b392670ced210130fd64d7e1598d79.tar.gz
- Added support for rendering and reflecting
TIMESTAMP WITH TIME ZONE, i.e. TIMESTAMP(timezone=True). [ticket:651] - Oracle INTERVAL type can now be reflected.
Diffstat (limited to 'lib')
-rw-r--r--lib/sqlalchemy/dialects/oracle/base.py12
1 files changed, 11 insertions, 1 deletions
diff --git a/lib/sqlalchemy/dialects/oracle/base.py b/lib/sqlalchemy/dialects/oracle/base.py
index b270f38cf..2af5bdd7d 100644
--- a/lib/sqlalchemy/dialects/oracle/base.py
+++ b/lib/sqlalchemy/dialects/oracle/base.py
@@ -225,6 +225,8 @@ ischema_names = {
'CLOB' : CLOB,
'NCLOB' : NCLOB,
'TIMESTAMP' : TIMESTAMP,
+ 'TIMESTAMP WITH TIME ZONE' : TIMESTAMP,
+ 'INTERVAL DAY TO SECOND' : INTERVAL,
'RAW' : RAW,
'FLOAT' : FLOAT,
'DOUBLE PRECISION' : DOUBLE_PRECISION,
@@ -256,7 +258,13 @@ class OracleTypeCompiler(compiler.GenericTypeCompiler):
"(%d)" % type_.second_precision or
"",
)
-
+
+ def visit_TIMESTAMP(self, type_):
+ if type_.timezone:
+ return "TIMESTAMP WITH TIME ZONE"
+ else:
+ return "TIMESTAMP"
+
def visit_DOUBLE_PRECISION(self, type_):
return self._generate_numeric(type_, "DOUBLE PRECISION")
@@ -756,6 +764,8 @@ class OracleDialect(default.DefaultDialect):
coltype = NUMBER(precision, scale)
elif coltype=='CHAR' or coltype=='VARCHAR2':
coltype = self.ischema_names.get(coltype)(length)
+ elif 'WITH TIME ZONE' in coltype:
+ coltype = TIMESTAMP(timezone=True)
else:
coltype = re.sub(r'\(\d+\)', '', coltype)
try: