与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
。在
谢谢!在
我太蠢了。。服务器出了问题(不得不将我的排序规则更改为所需的语言)
谢谢!在
它可能与pyodbc正在使用的odbc驱动程序有关。如果它不支持unicode,那么您可能需要自己对参数进行编码,比如
name.encode('utf-16')
另外,您应该真正地、真正地使用查询参数,而不是自己连接sql字符串,例如:
我怀疑这是否能帮助您解决unicode问题,但它更安全、更简单。在
(还有另一个不相关的提示:通过sqlalchemy使用pyodbc要好得多,即使您只将其用于简单的查询,而不使用对象关系映射工具)
相关问题 更多 >
编程相关推荐