From: Brad Allen Date: Sun, 21 Mar 2010 03:58:32 +0000 (-0600) Subject: now loading mxODBC exception classes into module namespace while still avoiding modul... X-Git-Tag: rel_0_6beta3~16 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=323f1b358de19cc9cbfd45408636aa58060adf15;p=thirdparty%2Fsqlalchemy%2Fsqlalchemy.git now loading mxODBC exception classes into module namespace while still avoiding module imports (hooking into dbapi class method) --- diff --git a/lib/sqlalchemy/connectors/mxodbc.py b/lib/sqlalchemy/connectors/mxodbc.py index 0c7e5ad06e..ac7075209c 100644 --- a/lib/sqlalchemy/connectors/mxodbc.py +++ b/lib/sqlalchemy/connectors/mxodbc.py @@ -31,6 +31,9 @@ class MxODBCConnector(Connector): @classmethod def dbapi(cls): + # this classmethod will normally be replaced by an instance + # attribute of the same name, so this is normally only called once. + cls._load_mx_exceptions() platform = sys.platform if platform == 'win32': from mx.ODBC import Windows as module @@ -43,6 +46,16 @@ class MxODBCConnector(Connector): raise ImportError, "Unrecognized platform for mxODBC import" return module + @classmethod + def _load_mx_exceptions(cls): + """ Import mxODBC exception classes into the module namespace, + as if they had been imported normally. This is done here + to avoid requiring all SQLAlchemy users to install mxODBC. + """ + global InterfaceError, ProgrammingError + from mx.ODBC import InterfaceError + from mx.ODBC import ProgrammingError + def on_connect(self): def connect(conn): conn.stringformat = self.dbapi.MIXED_STRINGFORMAT