can you run this query please?

SELECT schema_name()

the issue is, that query is returning a result, there is a row, but it
no columns, which is nonsensical.  Did you try running with the
mssql+pymssql:// driver?   Looks like a pyodbc bug so far but need
more info.



On Tue, Jul 4, 2017 at 9:59 AM, Simon King <si...@simonking.org.uk> wrote:
> The key part of the stack trace is:
>
> File "c:\Program
> Files\Anaconda2\lib\site-packages\sqlalchemy\dialects\mssql\base.py",
> line 1773, in _get_default_schema_name default_schema_name =
> connection.scalar(query)
>
> ...which is in this function:
>
> https://bitbucket.org/zzzeek/sqlalchemy/src/8d740d6bd6b8bcc061713443120c67e611cdcb34/lib/sqlalchemy/dialects/mssql/base.py?at=rel_1_1_11&fileviewer=file-view-default#base.py-1768
>
> It's failing to fetch the single value that ought to come back from
> the query "SELECT schema_name()".
>
> I don't know anything about MSSQL or ODBC, but you could try poking
> around with pdb in the scalar() function:
>
> https://bitbucket.org/zzzeek/sqlalchemy/src/8d740d6bd6b8bcc061713443120c67e611cdcb34/lib/sqlalchemy/engine/result.py?at=rel_1_1_11&fileviewer=file-view-default#result.py-1212
>
> Simon
>
>
> On Tue, Jul 4, 2017 at 2:39 PM, Paul Morel
> <paul.mo...@tartansolutions.com> wrote:
>> Mike,
>>
>> Sorry for the lack of information.  Please find the rest of what you wanted
>> below.
>>
>> Full Stack Trace:
>>
>>> ---- Running Direct SQL Query
>>> Traceback (most recent call last):
>>>   File "test.py", line 45, in <module> result = con.execute('SELECT * FROM
>>> EPO_MODELS')
>>>   File "c:\Program
>>> Files\Anaconda2\lib\site-packages\sqlalchemy\orm\session.py",line 1139, in
>>> execute bind, close_with_result=True).execute(clause, params or {})
>>>   File "c:\Program
>>> Files\Anaconda2\lib\site-packages\sqlalchemy\orm\session.py",line 1003, in
>>> _connection_for_bind engine, execution_options)
>>>   File "c:\Program
>>> Files\Anaconda2\lib\site-packages\sqlalchemy\orm\session.py",line 403, in
>>> _connection_for_bind conn = bind.contextual_connect()
>>>   File "c:\Program
>>> Files\Anaconda2\lib\site-packages\sqlalchemy\engine\base.py",line 2112, in
>>> contextual_connect self._wrap_pool_connect(self.pool.connect, None),
>>>   File "c:\Program
>>> Files\Anaconda2\lib\site-packages\sqlalchemy\engine\base.py",line 2147, in
>>> _wrap_pool_connect return fn()
>>>   File "c:\Program Files\Anaconda2\lib\site-packages\sqlalchemy\pool.py",
>>> line 387, in connect return _ConnectionFairy._checkout(self)
>>>   File "c:\Program Files\Anaconda2\lib\site-packages\sqlalchemy\pool.py",
>>> line 766, in _checkout fairy = _ConnectionRecord.checkout(pool)
>>>   File "c:\Program Files\Anaconda2\lib\site-packages\sqlalchemy\pool.py",
>>> line 516, in checkout rec = pool._do_get()
>>>   File "c:\Program Files\Anaconda2\lib\site-packages\sqlalchemy\pool.py",
>>> line 1138, in _do_get self._dec_overflow()
>>>   File "c:\Program
>>> Files\Anaconda2\lib\site-packages\sqlalchemy\util\langhelpers.py", line 66,
>>> in __exit__ compat.reraise(exc_type, exc_value, exc_tb)
>>>   File "c:\Program Files\Anaconda2\lib\site-packages\sqlalchemy\pool.py",
>>> line 1135, in _do_get return self._create_connection()
>>>   File "c:\Program Files\Anaconda2\lib\site-packages\sqlalchemy\pool.py",
>>> line 333, in _create_connection return _ConnectionRecord(self)
>>>   File "c:\Program Files\Anaconda2\lib\site-packages\sqlalchemy\pool.py",
>>> line 461, in __init__ self.__connect(first_connect_check=True)
>>>   File "c:\Program Files\Anaconda2\lib\site-packages\sqlalchemy\pool.py",
>>> line 661, in __connect exec_once(self.connection, self)
>>>   File "c:\Program
>>> Files\Anaconda2\lib\site-packages\sqlalchemy\event\attr.py",line 246, in
>>> exec_once self(*args, **kw)
>>>   File "c:\Program
>>> Files\Anaconda2\lib\site-packages\sqlalchemy\event\attr.py",line 256, in
>>> __call__ fn(*args, **kw)
>>>   File "c:\Program
>>> Files\Anaconda2\lib\site-packages\sqlalchemy\util\langhelpers.py", line
>>> 1331, in go return once_fn(*arg, **kw)
>>>   File "c:\Program
>>> Files\Anaconda2\lib\site-packages\sqlalchemy\engine\strategies.py", line
>>> 181, in first_connect dialect.initialize(c)
>>>   File "c:\Program
>>> Files\Anaconda2\lib\site-packages\sqlalchemy\connectors\pyodb c.py", line
>>> 165, in initialize super(PyODBCConnector, self).initialize(connection)
>>>   File "c:\Program
>>> Files\Anaconda2\lib\site-packages\sqlalchemy\dialects\mssql\base.py", line
>>> 1742, in initialize super(MSDialect, self).initialize(connection)
>>>   File "c:\Program
>>> Files\Anaconda2\lib\site-packages\sqlalchemy\engine\default.py", line 250,
>>> in initialize self._get_default_schema_name(connection)
>>>   File "c:\Program
>>> Files\Anaconda2\lib\site-packages\sqlalchemy\dialects\mssql\base.py", line
>>> 1773, in _get_default_schema_name default_schema_name =
>>> connection.scalar(query)
>>>   File "c:\Program
>>> Files\Anaconda2\lib\site-packages\sqlalchemy\engine\base.py",line 877, in
>>> scalar return self.execute(object, *multiparams, **params).scalar()
>>>   File "c:\Program
>>> Files\Anaconda2\lib\site-packages\sqlalchemy\engine\result.py", line 1223,
>>> in scalar return row[0]
>>>   File "c:\Program
>>> Files\Anaconda2\lib\site-packages\sqlalchemy\engine\result.py", line 563, in
>>> _key_fallback expression._string_or_unprintable(key))
>>>   sqlalchemy.exc.NoSuchColumnError: "Could not locate column in row for
>>> column '0'"
>>
>>
>> ODBC Driver Versions:
>>>
>>> SQL Server (SQLSRV32.DLL) = 6.00.6002.18005
>>> SQL Server Native Client 10.0 (SQLNCLI10.DLL) = 2007.100.2531.00
>>
>>
>> SQL Server Version
>>>
>>> SQL Server 2008
>>> Microsoft SQL Server Management Studio = 10.0.6000.29
>>> Microsoft Analysis Services Client Tools = 10.0.6000.29
>>> Microsoft Data Access Components (MDAC) = 6.0.6002.18005
>>> Microsoft MSXML = 3.0 6.0
>>> Microsoft Internet Explorer = 9.0.8112.16421
>>> Microsoft .NET Framework = 2.0.50727.4253
>>> Operating System = 6.0.6002
>>
>>
>> Server OS
>>>
>>> Windows Server 2008 Enterprise
>>> Service Pack 2 Installed
>>
>>
>> On Monday, July 3, 2017 at 8:33:54 PM UTC-5, Mike Bayer wrote:
>>>
>>> Can you send complete stack trace please?  That's the main thing that will
>>> show which query this is occurring on (there are several upon connect).
>>> Also full detail on SQL server version, odbc driver, client operating
>>> system.
>>>
>>> On Jul 3, 2017 7:26 PM, "Paul Morel" <paul....@tartansolutions.com> wrote:
>>>
>>> Hi,
>>>
>>> I have been trying to diagnose this issue in a Windows Python 2.7
>>> (Anaconda installed) environment running SQLAlchemy=1.1.11, pyodbc=4.0.17,
>>> and pymssql=2.1.3.
>>>
>>> Both pyodbc and pymssql connections will successfully connect and query a
>>> table correctly.  However, when I attempt the same connection and query
>>> through SQLAlchemy either using an ORM or direct SQL, it fails with the
>>> following error:
>>>
>>>> sqlalchemy.exc.NoSuchColumnError: "Could not locate column in row for
>>>> column '0'
>>>
>>>
>>> The connection string I'm using is the following:
>>>
>>>
>>> 'mssql+pyodbc://:@CMPDSQL01:1433/CMP?driver=SQL+Server+Native+Client+10.0'
>>>
>>>
>>> The connection and simple query through pyodbc uses the following:
>>>
>>>     print "---- Testing pyodbc Directly"
>>>     cnxn = pyodbc.connect(
>>>         r'Trusted_Connection=yes;'
>>>         r'DRIVER={SQL Server Native Client 10.0};'
>>>         r'SERVER=CMPDSQL01;'
>>>         r'DATABASE=CMP;'
>>>         )
>>>
>>>     print cnxn
>>>     print "---- Complete ----"
>>>
>>>     print "---- Running Direct SQL Query on pyodbc Direct Connection"
>>>     cursor = cnxn.cursor()
>>>     cursor.execute('SELECT * FROM EPO_MODELS')
>>>     for r in cursor:
>>>         print r
>>>     print "---- Complete ----"
>>>
>>>
>>> The connection and simple query through pymssql uses the following:
>>>
>>>     print "---- Testing pymssql Directly"
>>>     cnxn = pymssql.connect(server='CMPDSQL01', port='1433',
>>> database='CMP')
>>>     print cnxn
>>>     print "---- Complete ----"
>>>
>>>     print "---- Running Direct SQL Query on pymssql Direct Connection"
>>>     cursor = cnxn.cursor()
>>>     cursor.execute('SELECT * FROM EPO_MODELS')
>>>     for r in cursor:
>>>         print r
>>>     print "---- Complete ----"
>>>
>>>
>>> What is even more perplexing is that the SQLAlchemy connection used to
>>> work but now no longer works.  Unfortunately I don't know what broke it due
>>> to a clean start install.
>>>
>>> I don't think the EPO_MODELS object model comes into play with this error
>>> because even a direct SQL query fails in the same way.  However, for
>>> completeness the EPO_MODELS object model is very simple and looks like the
>>> following:
>>>
>>>     class EPO_MODELS(Base):
>>>         __tablename__ = 'EPO_MODELS'
>>>
>>>         ID = Column(Integer, primary_key=True, autoincrement=False)
>>>         MODELTYPE = Column(Integer, autoincrement=False)
>>>         MODELNAME = Column(NVARCHAR(255))
>>>         MEMO = Column(NVARCHAR(2000))
>>>         NEXTUNIQUEID = Column(Integer, autoincrement=False)
>>>         MODELSYNC = Column(Integer, autoincrement=False)
>>>         MODELSTATUS = Column(Integer, autoincrement=False)
>>>         AUDITUSERID = Column(Integer, autoincrement=False)
>>>         DATEALTERED = Column(DateTime)
>>>         CREATIONDATE = Column(DateTime)
>>>
>>>
>>> The direct SQLAlchemy query looks like the following after getting the
>>> session using the connection string above:
>>>
>>>     print "---- Running Direct SQL Query Through SQLAlchemy Connection"
>>>     result = con.execute('SELECT * FROM EPO_MODELS')
>>>     for r in result:
>>>         print r
>>>     print "---- Complete ----"
>>>
>>> Very much appreciate any insight into what is going on here.  I can't seem
>>> to find the disconnect. Thanks in advance.
>>>
>>> Stack Overflow Post is here:  https://stackoverflow.com/q/44893049/227542
>>>
>>> -Paul
>>>
>>> --
>>> 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 sqlalchemy+...@googlegroups.com.
>>> To post to this group, send email to sqlal...@googlegroups.com.
>>> 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 sqlalchemy+unsubscr...@googlegroups.com.
>> To post to this group, send email to sqlalchemy@googlegroups.com.
>> 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 sqlalchemy+unsubscr...@googlegroups.com.
> To post to this group, send email to sqlalchemy@googlegroups.com.
> 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 sqlalchemy+unsubscr...@googlegroups.com.
To post to this group, send email to sqlalchemy@googlegroups.com.
Visit this group at https://groups.google.com/group/sqlalchemy.
For more options, visit https://groups.google.com/d/optout.

Reply via email to