[Sqlalchemy-tickets] Issue #4227: SQL server / pyodbc allows non-int tokens in version tuple which
Brought to you by:
zzzeek
From: Michael B. <iss...@bi...> - 2018-03-29 13:01:18
|
New issue 4227: SQL server / pyodbc allows non-int tokens in version tuple which fails on comparison https://bitbucket.org/zzzeek/sqlalchemy/issues/4227/sql-server-pyodbc-allows-non-int-tokens-in Michael Bayer: e.g. stack trace like: ``` #!python return once_fn(*arg, **kw) File "C:\Users\m.m\Envs\mentrix\lib\site-packages\sqlalchemy\engine\strategies.py", line 183, in first_connect dialect.initialize(c) File "C:\Users\m.m\Envs\mentrix\lib\site-packages\sqlalchemy\dialects\mssql\base.py", line 1931, in initialize super(MSDialect, self).initialize(connection) File "C:\Users\m.m\Envs\mentrix\lib\site-packages\sqlalchemy\engine\default.py", line 267, in initialize self._get_default_schema_name(connection) File "C:\Users\m.m\Envs\mentrix\lib\site-packages\sqlalchemy\dialects\mssql\base.py", line 1958, in _get_default_schema_name if self.server_version_info < MS_2005_VERSION: TypeError: '<' not supported between instances of 'str' and 'int' ``` we should not be allowing non-int tokens in the version string at all: ``` #!diff diff --git a/lib/sqlalchemy/dialects/mssql/pyodbc.py b/lib/sqlalchemy/dialects/mssql/pyodbc.py index 14e8ae838..30b8b8b50 100644 --- a/lib/sqlalchemy/dialects/mssql/pyodbc.py +++ b/lib/sqlalchemy/dialects/mssql/pyodbc.py @@ -291,7 +291,7 @@ class MSDialect_pyodbc(PyODBCConnector, MSDialect): try: version.append(int(n)) except ValueError: - version.append(n) + pass return tuple(version) def is_disconnect(self, e, connection, cursor): ``` however, need to figure out what version string this user is getting as we still need to locate the numeric tokens. |