summaryrefslogtreecommitdiff
path: root/lib/sqlalchemy/connectors/mxodbc.py
diff options
context:
space:
mode:
authorBrad Allen <bradallen137@gmail.com>2010-03-17 16:06:42 -0600
committerBrad Allen <bradallen137@gmail.com>2010-03-17 16:06:42 -0600
commite6a7f1ce0c5f365997f3d856eeb0259528967c03 (patch)
tree50279d7f51809645d80df8bf958779e145633170 /lib/sqlalchemy/connectors/mxodbc.py
parent4f1d92f367628f32e60bf5f52c4ead3dd563c678 (diff)
parent214ed6239eb187c32e37bb7e3e3ac76555e266aa (diff)
downloadsqlalchemy-e6a7f1ce0c5f365997f3d856eeb0259528967c03.tar.gz
Merged from main tip, and resolved conflicts in mxodbc dialect and connector.
Diffstat (limited to 'lib/sqlalchemy/connectors/mxodbc.py')
-rw-r--r--lib/sqlalchemy/connectors/mxodbc.py35
1 files changed, 19 insertions, 16 deletions
diff --git a/lib/sqlalchemy/connectors/mxodbc.py b/lib/sqlalchemy/connectors/mxodbc.py
index 0e7bc14c4..66ebfb4b0 100644
--- a/lib/sqlalchemy/connectors/mxodbc.py
+++ b/lib/sqlalchemy/connectors/mxodbc.py
@@ -50,11 +50,28 @@ class MxODBCConnector(Connector):
conn.stringformat = self.dbapi.MIXED_STRINGFORMAT
conn.datetimeformat = self.dbapi.PYDATETIME_DATETIMEFORMAT
conn.decimalformat = self.dbapi.DECIMAL_DECIMALFORMAT
- conn.errorhandler = error_handler
+ conn.errorhandler = self._error_handler()
# Alternatives to experiment with:
#conn.bindmethod = self.dbapi.BIND_USING_PYTHONTYPE
conn.bindmethod = self.dbapi.BIND_USING_SQLTYPE
return connect
+
+ def _error_handler(self):
+ """Return a handler that adjusts mxODBC's raised Warnings to
+ emit Python standard warnings.
+ """
+
+ from mx.ODBC.Error import Warning as MxOdbcWarning
+ def error_handler(connection, cursor, errorclass, errorvalue):
+
+ if issubclass(errorclass, MxOdbcWarning):
+ errorclass.__bases__ = (Warning,)
+ warnings.warn(message=str(errorvalue),
+ category=errorclass,
+ stacklevel=2)
+ else:
+ raise errorclass, errorvalue
+ return error_handler
def create_connect_args(self, url):
""" Return a tuple of *args,**kwargs for creating a connection.
@@ -69,6 +86,7 @@ class MxODBCConnector(Connector):
The arg 'errorhandler' is not used by SQLAlchemy and will
not be populated.
+
"""
opts = url.translate_connect_args(username='user')
opts.update(url.query)
@@ -98,21 +116,6 @@ class MxODBCConnector(Connector):
return tuple(version)
-
-
-def error_handler(connection, cursor, errorclass, errorvalue):
- """
- Adjust mxODBC's raised Warnings to emit Python standard warnings.
- """
- if issubclass(errorclass, MxOdbcWarning):
- errorclass.__bases__ = (Warning,)
- warnings.warn(message=str(errorvalue),
- category=errorclass,
- stacklevel=2)
- else:
- raise errorclass, errorvalue
-
-
class MxNumeric(sqltypes.Numeric):
"""
Handle Numeric types between SQLAlchemy and mxODBC.