无法从Pyodbc连接到SQL Server DB

时间:2019-04-18 20:10:05

标签: python sql-server pyodbc progress datadirect

我在尝试使用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进行了尝试。两者都不起作用,仍然会引发与汉字相同的界面错误。

有什么想法吗?

0 个答案:

没有答案