我们正在运行 - 红帽企业Linux服务器版本7.2(Maipo),带有Teradata rpms: - tdodbc1510-15.10.01.05-1.noarch - TeraGSS_linux_x64-15.10.04.02-1.noarch - tdicu1510-15.10.01.02-1.noarch
通过pyodbc(3.0.10)与Python 3.6连接,如下所示:
>>> 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 tracefile表示成功执行,但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 :(得分:0)
这似乎是在Linux机器上使用Teradata的ODBC驱动程序特有的问题,已经注意到了这一点: Python with Teradata ODBC 因此,从源代码编译pyodbc似乎已经解决了这个问题。 但是,ODBC驱动程序本身是有限的,因为它不支持连接池。如果pyodbc.pooling为True,则必须将其设置为pyodbc.pooling = False,否则会引发pyodbc.connect的以下错误: RuntimeError:无法设置SQL_ATTR_CONNECTION_POOLING属性。