pyODBC和Unicode

2024-06-27 07:47:20 发布

您现在位置:Python中文网/ 问答频道 /正文

与SQL Express 2005的SQL Express进行通信。 我试图保存数据的表由nvarchar列组成。在

query = u"INSERT INTO tblPersons (name, birthday, gender) VALUES('"
query  = query  + name + u"', '"
query  = query  + birthday + u"', '"
query  = query  + gender + u"')"
cur.execute(query)

变量name、birtherday和gende从Excel文件中读取,它们是Unicode字符串。 当我执行查询并使用SQLServerManagementStudio查看表或执行获取刚刚插入的数据的查询时,所有用非英语语言编写的数据都会变成问号。以英语编写的数据将被保留并以正确的方式显示在表中。 我尝试将CHARSET=UTF16添加到我的连接字符串中,但没有成功。 我可以使用UTF-8,但作为一个工作惯例,我需要我的数据库中保存的所有数据都是UTF16。在

谢谢!在


Tags: 数据字符串namesqlquerygenderinsertbirthday
2条回答

我太蠢了。。服务器出了问题(不得不将我的排序规则更改为所需的语言)

谢谢!在

它可能与pyodbc正在使用的odbc驱动程序有关。如果它不支持unicode,那么您可能需要自己对参数进行编码,比如name.encode('utf-16')

另外,您应该真正地、真正地使用查询参数,而不是自己连接sql字符串,例如:

query = "INSERT INTO tblPersons (name, birthday, gender) VALUES (?, ?, ?)"
cur.execute(query, [name, birthday, gender])

我怀疑这是否能帮助您解决unicode问题,但它更安全、更简单。在

(还有另一个不相关的提示:通过sqlalchemy使用pyodbc要好得多,即使您只将其用于简单的查询,而不使用对象关系映射工具)

相关问题 更多 >