2017-03-20 10 views
0

から0行を返すのRed Hat Enterprise Linux Serverは、TeradataのRPMパッケージで、7.2(マイポ)を放出します。 noarch - tdicu1510-15.10.01.02-1.noarchpyodbcカーソルは我々が実行されているTeradataの

とPython 3.6でpyodbc(3.0.10)を介して接続するので、等:

>>> import pyodbc 
>>> conn = pyodbc.connect('DSN=devdb;UID=xxx;PWD=xxx') 
>>> curs = conn.execute('\nselect user as me') 
>>> len(curs.fetchall()) 
Traceback (most recent call last): 
File "<stdin>", line 1, in <module> 
pyodbc.ProgrammingError: No results. Previous SQL was not a query. 

またODBCトレースファイルが正常に実行を示しているが、がSQLRowCount = 0 :

2759 1 TS:201920:[139723593647936] SQLExecDirect returns SQL_SUCCESS [ execute.cpp 542 ] 
2760  TS:201920:[139723593647936] SQLRowCount(hstmt5, pcrow) --> [ results.cpp 3165 ] 
2761 1 TS:201920:[139723593647936] SQLRowCount() = 0 [ results.cpp 3212 ] 
2762  TS:201920:[139723593647936] SQLNumResultCols(hstmt5, pccol) [ results.cpp 210 ] 
2763 1 TS:201920:[139723593647936] SQLNumResultCols() [ results.cpp 224 ] 
2764 1 TS:201920:[139723593647936] --> 0 [ results.cpp 248 ] 
2765 1 TS:201920:[139723593647936] SQLNumResultCols returns SQL_SUCCESS [ results.cpp 251 ] 

有効なクエリでは、カーソルは結果を返しません。 誰かがこれにいくつかの光を当てることができますか?

+0

'.fetchall()'を実行する前に 'curs.nextset()'を実行するとどうなりますか? –

答えて

0

これは、それが指摘されていたためにLinuxマシン上のTeradataのODBCドライバを使用する特定の問題であると表示されます。ソースからpyodbcをコンパイルしても問題が解決したように見えるが、そう Python with Teradata ODBC 。 ただし、接続プーリングをサポートしていないため、ODBCドライバ自体は制限されています。 pyodbc.poolingがTrueの場合、pyodbc.pooling = Falseに設定する必要があります。そうでない場合、pyodbc.connectで次のエラーがスローされます。 RuntimeError:SQL_ATTR_CONNECTION_POOLING属性を設定できません。

関連する問題