diff options
| author | Mike Bayer <mike_mp@zzzcomputing.com> | 2010-03-18 12:05:20 -0400 |
|---|---|---|
| committer | Mike Bayer <mike_mp@zzzcomputing.com> | 2010-03-18 12:05:20 -0400 |
| commit | 77fa087d1577dedbb18c197641bf81e6d0862505 (patch) | |
| tree | 38b3170137e9318e976bad197ae6aafb31de7d26 /lib/sqlalchemy/dialects/sybase/pyodbc.py | |
| parent | 074cab9e7d01533302e84a489d740accad25476a (diff) | |
| download | sqlalchemy-77fa087d1577dedbb18c197641bf81e6d0862505.tar.gz | |
turning the decimals to floats allows the E notation to work with sybase+pyodbc for small E notations
Diffstat (limited to 'lib/sqlalchemy/dialects/sybase/pyodbc.py')
| -rw-r--r-- | lib/sqlalchemy/dialects/sybase/pyodbc.py | 26 |
1 files changed, 26 insertions, 0 deletions
diff --git a/lib/sqlalchemy/dialects/sybase/pyodbc.py b/lib/sqlalchemy/dialects/sybase/pyodbc.py index 1bb09251c..61cf333da 100644 --- a/lib/sqlalchemy/dialects/sybase/pyodbc.py +++ b/lib/sqlalchemy/dialects/sybase/pyodbc.py @@ -31,6 +31,26 @@ Currently *not* supported are:: from sqlalchemy.dialects.sybase.base import SybaseDialect, SybaseExecutionContext from sqlalchemy.connectors.pyodbc import PyODBCConnector +import decimal +from sqlalchemy import processors, types as sqltypes + +# TODO: should this be part of pyodbc connectors ??? applies to MSSQL too ? +class _SybNumeric(sqltypes.Numeric): + def bind_processor(self, dialect): + super_process = super(_SybNumeric, self).bind_processor(dialect) + + def process(value): + if self.asdecimal and \ + isinstance(value, decimal.Decimal) and \ + value.adjusted() < -6: + return processors.to_float(value) + elif super_process: + return super_process(value) + else: + return value + return process + + class SybaseExecutionContext_pyodbc(SybaseExecutionContext): def set_ddl_autocommit(self, connection, value): if value: @@ -39,7 +59,13 @@ class SybaseExecutionContext_pyodbc(SybaseExecutionContext): connection.autocommit = False + class SybaseDialect_pyodbc(PyODBCConnector, SybaseDialect): execution_ctx_cls = SybaseExecutionContext_pyodbc + colspecs = { + sqltypes.Numeric:_SybNumeric, + sqltypes.Float:sqltypes.Float, + } + dialect = SybaseDialect_pyodbc |
