我已经成功建立了从库存树莓派4到我们在Windows 10上运行的本地数据库的连接。
在终端中,如果我输入:
tsql -S *servername* -U *username* -P *password*
select * from testlist_table
go
我得到了查询的结果,对于该测试来说一切都很好。值得一提的是,我在第一条tsql行之后就收到了:
默认编码为en_us.utf-8或类似的奇怪内容,然后:使用默认编码utf-8,
[如果键入,使用python代码时
import pyodbc
cnxn = pyodbc.connect("Driver={freeTDS};Server=*servername*;DATABASE=*databasename*;UID=*userid*;pwd=*pwd*")
cursor = cnxn.cursor()
cursor.execute("Select * from TestList_Table")
我收到以下错误:
仅使用Unicode排序规则或ntext数据的Unicode数据无法使用DB-Library(例如ISQL)或ODBC 3.7或更早版本发送给客户端。
有什么想法吗?我尝试设置编码/解码,但这没有帮助。如果到目前为止我选择了一个特定的字段,那是可行的。尝试更改所有代码并不感到兴奋,因为我有很多列,并且有时在一大堆代码中按列号进行引用。
我将假设您正在运行相对较新的FreeTDS版本(0.95或更高版本;您可以使用tsql -C
找到您的版本)。如果您使用的是较早版本,则无法使用,请尝试将TDS_Version
更改为7.2
或7.1
。
尝试一下:
import pyodbc
cnxn = pyodbc.connect(
"Driver={freeTDS};Server=*servername*;DATABASE=*databasename*;"
"UID=*userid*;pwd=*pwd*;TDS_Version=7.3;CHARSET=UTF-8;"
)
cursor = cnxn.cursor()
cursor.execute("Select * from TestList_Table")