summaryrefslogtreecommitdiff
path: root/lib/sqlalchemy/dialects/sybase
diff options
context:
space:
mode:
authorMike Bayer <mike_mp@zzzcomputing.com>2010-03-19 11:17:14 -0400
committerMike Bayer <mike_mp@zzzcomputing.com>2010-03-19 11:17:14 -0400
commit5be0d3133bb3591ca31e2da0a01fb3d3038aa9f8 (patch)
treeb87ada594b4023536cece6698005571e73758408 /lib/sqlalchemy/dialects/sybase
parentb2c2f58d983147a27031e20b95af4191b2aa8356 (diff)
downloadsqlalchemy-5be0d3133bb3591ca31e2da0a01fb3d3038aa9f8.tar.gz
switching Decimal treatment in MSSQL to be pyodbc specific, added
to connector to share between sybase/mssql. Going with turning decimals with very low significant digit to floats, seems to work so far.
Diffstat (limited to 'lib/sqlalchemy/dialects/sybase')
-rw-r--r--lib/sqlalchemy/dialects/sybase/pyodbc.py28
1 files changed, 6 insertions, 22 deletions
diff --git a/lib/sqlalchemy/dialects/sybase/pyodbc.py b/lib/sqlalchemy/dialects/sybase/pyodbc.py
index 61cf333da..893815930 100644
--- a/lib/sqlalchemy/dialects/sybase/pyodbc.py
+++ b/lib/sqlalchemy/dialects/sybase/pyodbc.py
@@ -29,27 +29,12 @@ 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
+from sqlalchemy.connectors.pyodbc import PyODBCConnector, PyODBCNumeric
+from sqlalchemy import types as sqltypes, util
+
+class _SybNumeric_pyodbc(PyODBCNumeric):
+ pass
class SybaseExecutionContext_pyodbc(SybaseExecutionContext):
def set_ddl_autocommit(self, connection, value):
@@ -64,8 +49,7 @@ class SybaseDialect_pyodbc(PyODBCConnector, SybaseDialect):
execution_ctx_cls = SybaseExecutionContext_pyodbc
colspecs = {
- sqltypes.Numeric:_SybNumeric,
- sqltypes.Float:sqltypes.Float,
+ sqltypes.Numeric:_SybNumeric_pyodbc,
}
dialect = SybaseDialect_pyodbc