diff options
| author | Mike Bayer <mike_mp@zzzcomputing.com> | 2010-03-19 12:30:22 -0400 |
|---|---|---|
| committer | Mike Bayer <mike_mp@zzzcomputing.com> | 2010-03-19 12:30:22 -0400 |
| commit | 7de2b6923f214674cf139b21125f41c2752094eb (patch) | |
| tree | a7054ff03d866eb5d935f98c82bc327920831df5 /lib | |
| parent | e2807dcd36c85c65ad0c72135078e8cb76fb77c4 (diff) | |
| download | sqlalchemy-7de2b6923f214674cf139b21125f41c2752094eb.tar.gz | |
- get firebird on board
- a lot of these drivers suck at decimals, not sure what to do
Diffstat (limited to 'lib')
| -rw-r--r-- | lib/sqlalchemy/dialects/firebird/kinterbasdb.py | 25 | ||||
| -rw-r--r-- | lib/sqlalchemy/dialects/oracle/cx_oracle.py | 47 |
2 files changed, 49 insertions, 23 deletions
diff --git a/lib/sqlalchemy/dialects/firebird/kinterbasdb.py b/lib/sqlalchemy/dialects/firebird/kinterbasdb.py index 66d001e0c..9984d32a2 100644 --- a/lib/sqlalchemy/dialects/firebird/kinterbasdb.py +++ b/lib/sqlalchemy/dialects/firebird/kinterbasdb.py @@ -28,13 +28,32 @@ __ http://kinterbasdb.sourceforge.net/dist_docs/usage.html#special_issue_concurr """ from sqlalchemy.dialects.firebird.base import FBDialect, FBCompiler - - +from sqlalchemy import util, types as sqltypes + +class _FBNumeric_kinterbasdb(sqltypes.Numeric): + def bind_processor(self, dialect): + def process(value): + if value is not None: + return str(value) + else: + return value + return process + class FBDialect_kinterbasdb(FBDialect): driver = 'kinterbasdb' supports_sane_rowcount = False supports_sane_multi_rowcount = False - + + supports_native_decimal = True + + colspecs = util.update_copy( + FBDialect.colspecs, + { + sqltypes.Numeric:_FBNumeric_kinterbasdb + } + + ) + def __init__(self, type_conv=200, concurrency_level=1, **kwargs): super(FBDialect_kinterbasdb, self).__init__(**kwargs) diff --git a/lib/sqlalchemy/dialects/oracle/cx_oracle.py b/lib/sqlalchemy/dialects/oracle/cx_oracle.py index eee2bb1ba..c6e9cea5d 100644 --- a/lib/sqlalchemy/dialects/oracle/cx_oracle.py +++ b/lib/sqlalchemy/dialects/oracle/cx_oracle.py @@ -82,6 +82,12 @@ from sqlalchemy import types as sqltypes, util, exc from datetime import datetime import random +class _OracleNumeric(sqltypes.Numeric): + # cx_oracle accepts Decimal objects, but returns + # floats + def bind_processor(self, dialect): + return None + class _OracleDate(sqltypes.Date): def bind_processor(self, dialect): return None @@ -188,25 +194,6 @@ class _OracleInterval(oracle.INTERVAL): class _OracleRaw(oracle.RAW): pass -colspecs = { - 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, - oracle.INTERVAL : _OracleInterval, - sqltypes.Text : _OracleText, - sqltypes.String : _OracleString, - sqltypes.UnicodeText : _OracleUnicodeText, - sqltypes.CHAR : _OracleChar, - sqltypes.Integer : _OracleInteger, # this is only needed for OUT parameters. - # it would be nice if we could not use it otherwise. - oracle.NUMBER : oracle.NUMBER, # don't let this get converted - oracle.RAW: _OracleRaw, - sqltypes.Unicode: _OracleNVarChar, - sqltypes.NVARCHAR : _OracleNVarChar, -} - class OracleCompiler_cx_oracle(OracleCompiler): def bindparam_string(self, name): if self.preparer._bindparam_requires_quotes(name): @@ -346,7 +333,27 @@ class OracleDialect_cx_oracle(OracleDialect): execution_ctx_cls = OracleExecutionContext_cx_oracle statement_compiler = OracleCompiler_cx_oracle driver = "cx_oracle" - colspecs = colspecs + + colspecs = colspecs = { + sqltypes.Numeric: _OracleNumeric, + 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, + oracle.INTERVAL : _OracleInterval, + sqltypes.Text : _OracleText, + sqltypes.String : _OracleString, + sqltypes.UnicodeText : _OracleUnicodeText, + sqltypes.CHAR : _OracleChar, + sqltypes.Integer : _OracleInteger, # this is only needed for OUT parameters. + # it would be nice if we could not use it otherwise. + oracle.NUMBER : oracle.NUMBER, # don't let this get converted + oracle.RAW: _OracleRaw, + sqltypes.Unicode: _OracleNVarChar, + sqltypes.NVARCHAR : _OracleNVarChar, + } + execute_sequence_format = list |
