summaryrefslogtreecommitdiff
path: root/lib
diff options
context:
space:
mode:
authorBrad Allen <bradallen137@gmail.com>2010-03-18 14:05:59 -0600
committerBrad Allen <bradallen137@gmail.com>2010-03-18 14:05:59 -0600
commit49627de3d81bd7b60b241740a4792dcf3f0bd1d5 (patch)
tree78eda3cc5fbc41661453a9d858ce76e95f0d65ab /lib
parentecef296c6da91adaed575963d4e28e3d97ccdc60 (diff)
downloadsqlalchemy-49627de3d81bd7b60b241740a4792dcf3f0bd1d5.tar.gz
Removed MxNumeric and MxFloat because now the sqlalchemy.types base classes support dialects having a class attribute of "supports_native_decimal" indicating native Python Demimal support. Adjusted mssql+mxodbc to use the sqlalchemy.types base classes for Float and Numeric instead of using the base mssql dialect's numeric types.
Diffstat (limited to 'lib')
-rw-r--r--lib/sqlalchemy/connectors/mxodbc.py53
-rw-r--r--lib/sqlalchemy/dialects/mssql/mxodbc.py22
2 files changed, 10 insertions, 65 deletions
diff --git a/lib/sqlalchemy/connectors/mxodbc.py b/lib/sqlalchemy/connectors/mxodbc.py
index 059931de6..484c11d49 100644
--- a/lib/sqlalchemy/connectors/mxodbc.py
+++ b/lib/sqlalchemy/connectors/mxodbc.py
@@ -113,56 +113,3 @@ class MxODBCConnector(Connector):
return tuple(version)
-class MxNumeric(sqltypes.Numeric):
- """
- Handle Numeric types between SQLAlchemy and mxODBC.
- """
- def bind_processor(self, dialect):
- """
- SQLAlchemy can accept a Python Decimal for bind
- variables, so no special bind_processor is needed.
- """
- return None
-
- def result_processor(self, dialect, coltype):
- """
- By default, the SQLAlchemy mxODBC connector is
- configured to return Decimal values from
- Numeric columns. In addition, the SQLAlchemy's
- Numeric type is expected to return a Python Numeric,
- so by default no action is needed.
-
- However, if the user specifies asdecimal=False
- on a Decimal column, it is expected to return
- a Python float.
- """
- if self.asdecimal:
- return None
- else:
- return processors.to_float
-
-
-class MxFloat(sqltypes.Float):
- """
- Handle Numeric types between SQLAlchemy and mxODBC.
- """
- def bind_processor(self, dialect):
- """
- SQLAlchemy can accept a Python Decimal for bind
- variables, so no special bind_processor is needed.
- """
- return None
-
- def result_processor(self, dialect, coltype):
- """
- mxODBC returns Python float values for REAL, FLOAT, and
- DOUBLE column types, so if the user specifies 'asdecimal',
- SQLAlchemy needs to coerce the value to a Decimal type.
- Otherwise, no special action is needed.
- """
- if self.asdecimal:
- return processors.to_decimal_processor_factory(Decimal)
- else:
- return None
-
-
diff --git a/lib/sqlalchemy/dialects/mssql/mxodbc.py b/lib/sqlalchemy/dialects/mssql/mxodbc.py
index 2ff2f39f7..30d14bf38 100644
--- a/lib/sqlalchemy/dialects/mssql/mxodbc.py
+++ b/lib/sqlalchemy/dialects/mssql/mxodbc.py
@@ -3,10 +3,11 @@ import sys
from sqlalchemy import types as sqltypes
from sqlalchemy import util
-from sqlalchemy.connectors.mxodbc import MxODBCConnector, MxNumeric, MxFloat
+from sqlalchemy.connectors.mxodbc import MxODBCConnector
from sqlalchemy.dialects.mssql.pyodbc import MSExecutionContext_pyodbc
-from sqlalchemy.dialects.mssql.base import MSExecutionContext, MSDialect, \
- MSSQLCompiler, MSSQLStrictCompiler
+from sqlalchemy.dialects.mssql.base import (MSExecutionContext, MSDialect,
+ MSSQLCompiler, MSSQLStrictCompiler,
+ _MSDateTime, _MSDate, TIME)
class MSExecutionContext_mxodbc(MSExecutionContext_pyodbc):
@@ -24,17 +25,14 @@ class MSDialect_mxodbc(MxODBCConnector, MSDialect):
# TODO: may want to use this only if FreeTDS is not in use,
# since FreeTDS doesn't seem to use native binds.
statement_compiler = MSSQLStrictCompiler
-
execution_ctx_cls = MSExecutionContext_mxodbc
- colspecs = util.update_copy(
- MSDialect.colspecs,
- {
- sqltypes.Numeric : MxNumeric,
- sqltypes.Float : MxFloat
- },
- )
+ colspecs = {
+ #sqltypes.Numeric : _MSNumeric,
+ sqltypes.DateTime : _MSDateTime,
+ sqltypes.Date : _MSDate,
+ sqltypes.Time : TIME,
+ }
-
def __init__(self, description_encoding='latin-1', **params):
super(MSDialect_mxodbc, self).__init__(**params)