我在尝试使用pyodbc尝试连接到Linux上的SQL Server DB时遇到了困难。我创建了一个ODCINI文件条目。我从这里开始:
import pyodbc
conn = pyodbc.connect('DSN=DSN;Database=DB;UID=UID;PWD=PWD')
cursor = conn.cursor()
cursor.execute('SELECT count(*) FROM dbo.tableA')
for row in cursor.fetchall():
print(row)
会引发此错误:
RuntimeError: Unable to set SQL_ATTR_CONNECTION_POOLING attribute.
我搜索了该错误,并在阅读了一些建议后添加了这一行:
pyodbc.pooling=False
因此脚本更改为此:
import pyodbc
pyodbc.pooling=False
conn = pyodbc.connect('DSN=DSN;Database=DB;UID=UID;PWD=PWD')
cursor = conn.cursor()
cursor.execute('SELECT count(*) FROM dbo.tableA')
for row in cursor.fetchall():
print(row)
是什么原因造成的:
pyodbc.InterfaceError: ('IM003', '[IM003] 䑛瑡䑡物捥嵴佛䉄⁃楬嵢匠数楣楦摥搠楲敶\u2072潣汵\u2064潮⁴敢氠慯敤d\uffff\uffff㢸ꔻ罱\x00\ue5b8鮫罱\x00㳰ꔻ罱\x00\uffff\uffff罱\x00\x00\x00\x00\x00鳭ꕞ罱\x00塰ꕉ罱 (0) (SQLDriverConnect)')
在同事的建议下,我在pyodbc.connect行之后添加了这两行:
conn.setdecoding(pyodbc.SQL_CHAR, encoding='latin1', to=str)
conn.setencoding(str, encoding='latin1')
我同时使用latin1和utf-8进行了尝试。两者都不起作用,仍然会引发与汉字相同的界面错误。
有什么想法吗?