From ea4916001d5023100549d5dcc07ef51657d079fc Mon Sep 17 00:00:00 2001 From: Mike Bayer Date: Thu, 11 Mar 2010 10:27:18 -0500 Subject: [PATCH] - Oracle 'DATE' now does not perform any result processing, as the DATE type in Oracle stores full date+time objects, that's what you'll get. Note that the generic types.Date type *will* still call value.date() on incoming values, however. When reflecting a table, the reflected type will be 'DATE'. --- CHANGES | 6 ++++++ lib/sqlalchemy/dialects/oracle/base.py | 1 - lib/sqlalchemy/dialects/oracle/cx_oracle.py | 3 ++- test/dialect/test_oracle.py | 1 + 4 files changed, 9 insertions(+), 2 deletions(-) diff --git a/CHANGES b/CHANGES index f49c613920..a7457e6d31 100644 --- a/CHANGES +++ b/CHANGES @@ -289,6 +289,12 @@ CHANGES - "out" parameters require a type that is supported by cx_oracle. An error will be raised if no cx_oracle type can be found. + - Oracle 'DATE' now does not perform any result processing, + as the DATE type in Oracle stores full date+time objects, + that's what you'll get. Note that the generic types.Date + type *will* still call value.date() on incoming values, + however. When reflecting a table, the reflected type + will be 'DATE'. - sqlite - Added "native_datetime=True" flag to create_engine(). diff --git a/lib/sqlalchemy/dialects/oracle/base.py b/lib/sqlalchemy/dialects/oracle/base.py index 5f7a302929..3107c8b6c9 100644 --- a/lib/sqlalchemy/dialects/oracle/base.py +++ b/lib/sqlalchemy/dialects/oracle/base.py @@ -211,7 +211,6 @@ ischema_names = { 'NVARCHAR2' : NVARCHAR, 'CHAR' : CHAR, 'DATE' : DATE, - 'DATETIME' : DATETIME, 'NUMBER' : NUMBER, 'BLOB' : BLOB, 'BFILE' : BFILE, diff --git a/lib/sqlalchemy/dialects/oracle/cx_oracle.py b/lib/sqlalchemy/dialects/oracle/cx_oracle.py index 47909f8d17..d536188da7 100644 --- a/lib/sqlalchemy/dialects/oracle/cx_oracle.py +++ b/lib/sqlalchemy/dialects/oracle/cx_oracle.py @@ -177,7 +177,8 @@ class _OracleRaw(oracle.RAW): pass colspecs = { - sqltypes.Date : _OracleDate, + sqltypes.Date : _OracleDate, # generic type, assume datetime.date is desired + oracle.DATE: oracle.DATE, # non generic type - passthru sqltypes.LargeBinary : _OracleBinary, sqltypes.Boolean : oracle._OracleBoolean, sqltypes.Interval : _OracleInterval, diff --git a/test/dialect/test_oracle.py b/test/dialect/test_oracle.py index a6c3c19bcd..fc698f28ac 100644 --- a/test/dialect/test_oracle.py +++ b/test/dialect/test_oracle.py @@ -460,6 +460,7 @@ class TypesTest(TestBase, AssertsCompiledSQL): (oracle.OracleRaw(), cx_oracle._OracleRaw), (String(), String), (VARCHAR(), VARCHAR), + (DATE(), DATE), (String(50), String), (Unicode(), Unicode), (Text(), cx_oracle._OracleText), -- 2.47.3