diff options
author | Mike Bayer <mike_mp@zzzcomputing.com> | 2011-06-06 22:24:07 -0400 |
---|---|---|
committer | Mike Bayer <mike_mp@zzzcomputing.com> | 2011-06-06 22:24:07 -0400 |
commit | 9a34d9a83fa40a27c6e9ab5c275c48716895574c (patch) | |
tree | 624a8b9aa32adfcfa7b616e6f3c1c5e7f8bdbd44 /lib/sqlalchemy/connectors/pyodbc.py | |
parent | 2291c0a59a626abc1c23a3ba16b72574de2d3e98 (diff) | |
download | sqlalchemy-9a34d9a83fa40a27c6e9ab5c275c48716895574c.tar.gz |
- Adjusted the pyodbc dialect such that bound
values are passed as bytes and not unicode
if the "Easysoft" unix drivers are detected.
This is the same behavior as occurs with
FreeTDS. Easysoft appears to segfault
if Python unicodes are passed under
certain circumstances.
Diffstat (limited to 'lib/sqlalchemy/connectors/pyodbc.py')
-rw-r--r-- | lib/sqlalchemy/connectors/pyodbc.py | 14 |
1 files changed, 10 insertions, 4 deletions
diff --git a/lib/sqlalchemy/connectors/pyodbc.py b/lib/sqlalchemy/connectors/pyodbc.py index 3f6d6cb5f..ea4810df7 100644 --- a/lib/sqlalchemy/connectors/pyodbc.py +++ b/lib/sqlalchemy/connectors/pyodbc.py @@ -29,6 +29,10 @@ class PyODBCConnector(Connector): # if the freetds.so is detected freetds = False + # will be set to True after initialize() + # if the libessqlsrv.so is detected + easysoft = False + @classmethod def dbapi(cls): return __import__('pyodbc') @@ -98,15 +102,17 @@ class PyODBCConnector(Connector): dbapi_con = connection.connection - self.freetds = bool(re.match(r".*libtdsodbc.*\.so", - dbapi_con.getinfo(pyodbc.SQL_DRIVER_NAME) + _sql_driver_name = dbapi_con.getinfo(pyodbc.SQL_DRIVER_NAME) + self.freetds = bool(re.match(r".*libtdsodbc.*\.so", _sql_driver_name + )) + self.easysoft = bool(re.match(r".*libessqlsrv.*\.so", _sql_driver_name )) # the "Py2K only" part here is theoretical. # have not tried pyodbc + python3.1 yet. # Py2K - self.supports_unicode_statements = not self.freetds - self.supports_unicode_binds = not self.freetds + self.supports_unicode_statements = not self.freetds and not self.easysoft + self.supports_unicode_binds = not self.freetds and not self.easysoft # end Py2K # run other initialization which asks for user name, etc. |