missing a dot:

import pyodbc

pyodbc_connection = pyodbc.connect(...)

print(pyodbc_connection.getinfo(pyodbc.SQL_DBMS_VER))




On Thu, Mar 29, 2018 at 9:29 AM, Mike Bayer <[email protected]> wrote:
>> I render the code in pyodbc.py and add the pass to the except clause but it 
>> doesnt help getting the same error message with the str and int like before.
>
> OK that may suggest that it is falling back to the base pyodbc version
> management, so here is the updated patch:
>
> diff --git a/lib/sqlalchemy/connectors/pyodbc.py
> b/lib/sqlalchemy/connectors/pyodbc.py
> index d8c3fcec4..ae2b740b0 100644
> --- a/lib/sqlalchemy/connectors/pyodbc.py
> +++ b/lib/sqlalchemy/connectors/pyodbc.py
> @@ -145,7 +145,7 @@ class PyODBCConnector(Connector):
>              try:
>                  version.append(int(n))
>              except ValueError:
> -                version.append(n)
> +                pass
>          return tuple(version)
>
>      def set_isolation_level(self, connection, level):
> 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):
>
>
> can you connect with pyodbc directly, then run this query:
>
> cursor.execute("SELECT CAST(SERVERPROPERTY('ProductVersion') AS VARCHAR)")
> print(cursor.fetchone())
>
> it may raise an exception, send me that if so, then run this:
>
>
> print(pyodbc_connectiongetinfo(pyodbc.SQL_DBMS_VER)
>
> so again I can see what we are getting
>
>
> On Thu, Mar 29, 2018 at 9:18 AM, Maki <[email protected]> wrote:
>> Hi Mike!
>>
>> I think there's a misunderstanding. Im trying to connect to a InterSystem
>> Cache Database thru ODBC (Datasource) but my MS SQL Server Management Studio
>> has this version (12.0.5207.0)
>>
>> I render the code in pyodbc.py and add the pass to the except clause but it
>> doesnt help getting the same error message with the str and int like before.
>>
>>
>> Am Donnerstag, 29. März 2018 15:01:46 UTC+2 schrieb Mike Bayer:
>>>
>>> Hi -
>>>
>>> unfortunately the stack trace indicates a bug in SQLAlchemy in that it
>>> is not interpreting your database's version string correctly.
>>>
>>> can you please provide me with the output of:
>>>
>>> SELECT CAST(SERVERPROPERTY('ProductVersion') AS VARCHAR)
>>>
>>>
>>> Additionally, the likely cause of your issue can be worked around at
>>> the moment with this patch:
>>>
>>> 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):
>>>
>>>
>>>
>>> https://bitbucket.org/zzzeek/sqlalchemy/issues/4227/sql-server-pyodbc-allows-non-int-tokens-in
>>> is added.
>>>
>>> I need to see your version string so I can understand what tokens I
>>> need to weed out, thanks!
>>>
>>>
>>>
>>> On Thu, Mar 29, 2018 at 7:03 AM, Maki <[email protected]> wrote:
>>> > Im on a Windows OS and Python 3.6.4 and im stucked with a problem trying
>>> > to
>>> > connect to a DSN Datasource using SQLAlchemy 1.2.5
>>> >
>>> > Using pyodbc to connect to the DSN Datasource works great but using
>>> > SQLAlchemy create_engine method:
>>> >
>>> > engine = create_engine("mssql+pyodbc://user:pass@mydsn", echo=True)
>>> >
>>> > get me the following error:
>>> >
>>> >  File "mentrix.py", line 28, in <module>
>>> >   cnxn = engine.connect()
>>> > TypeError: '<' not supported between instances of 'str' and 'int'
>>> >
>>> > Can anyone point me on the right direction. Like ive said im trying to
>>> > use
>>> > SQLAlchemy to connect to a InterSystem ODBC35 DSN Datasource.
>>> >
>>> > Thanks in advanced!
>>> >
>>> > Code:
>>> >
>>> > from sqlalchemy import create_engine
>>> > import pyodbc
>>> >
>>> > engine = create_engine("mssql+pyodbc://user:pass@mydsn", echo=True)
>>> > cnxn = engine.connect()
>>> > rows = cnxn.execute("SELECT name FROM sys.tables").fetchall()
>>> > print(rows)
>>> >
>>> > Full traceback:
>>> >
>>> > 2018-03-29 11:33:44,631 INFO sqlalchemy.engine.base.Engine SELECT
>>> > CAST(SERVERPROPERTY('ProductVersion') AS VARCHAR)
>>> > 2018-03-29 11:33:44,631 INFO sqlalchemy.engine.base.Engine ()
>>> > Traceback (most recent call last):
>>> >   File "mentrix.py", line 28, in <module>
>>> >     cnxn = engine.connect()
>>> >   File
>>> > "C:\Users\m.m\Envs\mentrix\lib\site-packages\sqlalchemy\engine\base.py",
>>> > line 2102, in connect
>>> >     return self._connection_cls(self, **kwargs)
>>> >   File
>>> > "C:\Users\m.m\Envs\mentrix\lib\site-packages\sqlalchemy\engine\base.py",
>>> > line 90, in __init__
>>> >     if connection is not None else engine.raw_connection()
>>> >   File
>>> > "C:\Users\m.m\Envs\mentrix\lib\site-packages\sqlalchemy\engine\base.py",
>>> > line 2188, in raw_connection
>>> >     self.pool.unique_connection, _connection)
>>> >   File
>>> > "C:\Users\m.m\Envs\mentrix\lib\site-packages\sqlalchemy\engine\base.py",
>>> > line 2158, in _wrap_pool_connect
>>> >     return fn()
>>> >   File "C:\Users\m.m\Envs\mentrix\lib\site-packages\sqlalchemy\pool.py",
>>> > line 345, in unique_connection
>>> >     return _ConnectionFairy._checkout(self)
>>> >   File "C:\Users\m.m\Envs\mentrix\lib\site-packages\sqlalchemy\pool.py",
>>> > line 784, in _checkout
>>> >     fairy = _ConnectionRecord.checkout(pool)
>>> >   File "C:\Users\m.m\Envs\mentrix\lib\site-packages\sqlalchemy\pool.py",
>>> > line 532, in checkout
>>> >     rec = pool._do_get()
>>> >   File "C:\Users\m.m\Envs\mentrix\lib\site-packages\sqlalchemy\pool.py",
>>> > line 1189, in _do_get
>>> >     self._dec_overflow()
>>> >   File
>>> >
>>> > "C:\Users\m.m\Envs\mentrix\lib\site-packages\sqlalchemy\util\langhelpers.py",
>>> > line 66, in __exit__
>>> >     compat.reraise(exc_type, exc_value, exc_tb)
>>> >   File
>>> > "C:\Users\m.m\Envs\mentrix\lib\site-packages\sqlalchemy\util\compat.py",
>>> > line 187, in reraise
>>> >     raise value
>>> >   File "C:\Users\m.m\Envs\mentrix\lib\site-packages\sqlalchemy\pool.py",
>>> > line 1186, in _do_get
>>> >     return self._create_connection()
>>> >   File "C:\Users\m.m\Envs\mentrix\lib\site-packages\sqlalchemy\pool.py",
>>> > line 350, in _create_connection
>>> >     return _ConnectionRecord(self)
>>> >   File "C:\Users\m.m\Envs\mentrix\lib\site-packages\sqlalchemy\pool.py",
>>> > line 477, in __init__
>>> >     self.__connect(first_connect_check=True)
>>> >   File "C:\Users\m.m\Envs\mentrix\lib\site-packages\sqlalchemy\pool.py",
>>> > line 677, in __connect
>>> >     exec_once(self.connection, self)
>>> >   File
>>> > "C:\Users\m.m\Envs\mentrix\lib\site-packages\sqlalchemy\event\attr.py",
>>> > line
>>> > 274, in exec_once
>>> >     self(*args, **kw)
>>> >   File
>>> > "C:\Users\m.m\Envs\mentrix\lib\site-packages\sqlalchemy\event\attr.py",
>>> > line
>>> > 284, in __call__
>>> >     fn(*args, **kw)
>>> >   File
>>> >
>>> > "C:\Users\m.m\Envs\mentrix\lib\site-packages\sqlalchemy\util\langhelpers.py",
>>> > line 1334, in go
>>> >     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'
>>> >
>>> > --
>>> > SQLAlchemy -
>>> > The Python SQL Toolkit and Object Relational Mapper
>>> >
>>> > http://www.sqlalchemy.org/
>>> >
>>> > To post example code, please provide an MCVE: Minimal, Complete, and
>>> > Verifiable Example. See http://stackoverflow.com/help/mcve for a full
>>> > description.
>>> > ---
>>> > You received this message because you are subscribed to the Google
>>> > Groups
>>> > "sqlalchemy" group.
>>> > To unsubscribe from this group and stop receiving emails from it, send
>>> > an
>>> > email to [email protected].
>>> > To post to this group, send email to [email protected].
>>> > Visit this group at https://groups.google.com/group/sqlalchemy.
>>> > For more options, visit https://groups.google.com/d/optout.
>>
>> --
>> SQLAlchemy -
>> The Python SQL Toolkit and Object Relational Mapper
>>
>> http://www.sqlalchemy.org/
>>
>> To post example code, please provide an MCVE: Minimal, Complete, and
>> Verifiable Example. See http://stackoverflow.com/help/mcve for a full
>> description.
>> ---
>> You received this message because you are subscribed to the Google Groups
>> "sqlalchemy" group.
>> To unsubscribe from this group and stop receiving emails from it, send an
>> email to [email protected].
>> To post to this group, send email to [email protected].
>> Visit this group at https://groups.google.com/group/sqlalchemy.
>> For more options, visit https://groups.google.com/d/optout.

-- 
SQLAlchemy - 
The Python SQL Toolkit and Object Relational Mapper

http://www.sqlalchemy.org/

To post example code, please provide an MCVE: Minimal, Complete, and Verifiable 
Example.  See  http://stackoverflow.com/help/mcve for a full description.
--- 
You received this message because you are subscribed to the Google Groups 
"sqlalchemy" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To post to this group, send email to [email protected].
Visit this group at https://groups.google.com/group/sqlalchemy.
For more options, visit https://groups.google.com/d/optout.

Reply via email to