I ran that select statement under both the pyodbc and pymssql direct 
connections and it appears to have returned a legitimate row of data.  This 
is the excerpt from the test output:

---- Testing pymssql Directly
> <pymssql.Connection object at 0x0000000003F64D48>
> ---- Complete ----
> ---- Testing Get Schema Name with pymssql
> (u'dbo',)
> ---- Complete ----
> ---- Testing pyodbc Directly
> <pyodbc.Connection object at 0x0000000003F049D0>
> ---- Complete ----
> ---- Testing Get Schema Name with pyodbc
> (u'dbo', )
> ---- Complete ----
> ---- Testing SQLAlchemy Connection using pymssql
> <sqlalchemy.orm.session.Session object at 0x000000000518BEF0>
> ---- Complete ----


I switched over the SQLAlchemy connection string to use pymssql.  It now 
looks like this:

'mssql+pymssql://:@CMPDSQL01:1433/CMP'

The same error is produced.  I attempted to run the SELECT schema_name() 
query through the SQLAlchemy connection to see what was coming back but it 
failed in the same way because it is attempting its internal schema_name() 
query first.

This is indeed quite strange since both the pyodbc and pymssql direct 
connections did return a legit row when asking for the schema name.

On Tuesday, July 4, 2017 at 9:27:09 AM UTC-5, Mike Bayer wrote:
>
> 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 
> <javascript:>> 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....@tartansolutions.com <javascript:>> 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+...@googlegroups.com <javascript:>. 
> >> To post to this group, send email to sqlal...@googlegroups.com 
> <javascript:>. 
> >> 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+...@googlegroups.com <javascript:>. 
> > To post to this group, send email to sqlal...@googlegroups.com 
> <javascript:>. 
> > 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