diff options
| author | Mike Bayer <mike_mp@zzzcomputing.com> | 2010-03-15 20:56:55 -0400 |
|---|---|---|
| committer | Mike Bayer <mike_mp@zzzcomputing.com> | 2010-03-15 20:56:55 -0400 |
| commit | f8c490ea53040ffa7b073c0608b2b484237a8e85 (patch) | |
| tree | f3b206bd807a4e813a84f417ca92150a6db8266b /lib/sqlalchemy/connectors/mxodbc.py | |
| parent | 00ac90accb8d29cd665a9c14089c51a32afb3bd8 (diff) | |
| download | sqlalchemy-f8c490ea53040ffa7b073c0608b2b484237a8e85.tar.gz | |
adjust mxodbc imports to dialect level
Diffstat (limited to 'lib/sqlalchemy/connectors/mxodbc.py')
| -rw-r--r-- | lib/sqlalchemy/connectors/mxodbc.py | 38 |
1 files changed, 21 insertions, 17 deletions
diff --git a/lib/sqlalchemy/connectors/mxodbc.py b/lib/sqlalchemy/connectors/mxodbc.py index 2374b4c95..29b047d23 100644 --- a/lib/sqlalchemy/connectors/mxodbc.py +++ b/lib/sqlalchemy/connectors/mxodbc.py @@ -4,8 +4,6 @@ import re import warnings from sqlalchemy.connectors import Connector -from mx.ODBC import InterfaceError -from mx.ODBC.Error import Warning as MxOdbcWarning class MxODBCConnector(Connector): driver='mxodbc' @@ -33,11 +31,28 @@ class MxODBCConnector(Connector): def connect(conn): conn.stringformat = self.dbapi.MIXED_STRINGFORMAT conn.datetimeformat = self.dbapi.PYDATETIME_DATETIMEFORMAT - 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: + #import pdb; pdb.set_trace() + raise errorclass, errorvalue + return error_handler def create_connect_args(self, url): """ Return a tuple of *args,**kwargs for creating a connection. @@ -52,6 +67,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) @@ -81,20 +97,8 @@ class MxODBCConnector(Connector): return tuple(version) def do_execute(self, cursor, statement, parameters, context=None): + # TODO: dont need tuple() here + # TODO: use cursor.execute() cursor.executedirect(statement, tuple(parameters)) - -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: - #import pdb; pdb.set_trace() - raise errorclass, errorvalue - |
