问题描述
我正在用 python 编写一个导出器,它将从我们的数据库中获取所有产品。一切都很好,直到我不得不将我的工作环境从 linux 更改为 windows。
因此,我们的产品中有波兰语字母。在 linux 上工作时,当我将带有 pandas 的数据导出到 csv 时,我不必考虑编码。所有的名称、描述等都有正确的拼写。但是当我在 Windows 机器上尝试我的代码时,情况发生了变化。经过一番挖掘,我发现问题出现在 sql 查询期间。这是一个示例代码:
import pymssql
server = "SERVER_IP"
user = "USER"
password = "PASSWORD"
database = "DATABASE"
try:
conn = pymssql.connect(server,user,password,database)
except pymssql.OperationalError as err:
print('Error!',err)
exit(1)
query = """
SELECT
tw_Id as Id,tw_Rodzaj as Rodzaj,tw_Nazwa as Nazwa,tw_Opis as Opis,tw_Symbol as sku,tw_IdGrupa as Grupa
FROM dbo.tw__Towar
WHERE (tw_Zablokowany = 0 AND [tw_IdGrupa] in (2,5))
"""
cursor = conn.cursor()
cursor.execute(query)
row = cursor.fetchone()
print(row)
conn.close()
这段代码在linux上的结果:
(3,1,'Skuter Cristal BIAŁY 60V','3 kołowy skuter elektryczny biały 60V','CRI-WHI',2)
这里我们在 Windows 上有相同的代码:
(3,'Skuter Cristal BIA£Y 60V','3 ko³owy skuter elektryczny bia³y 60V',2)
我觉得这有点奇怪,但我试着看得更远。检查了我的 ms sql 数据库,发现与
select name,collation_name
from sys.databases
我的数据库的 collation_name 是 Polish_CI_AS 所以我试过很自然
conn = pymssql.connect(server,database,charset="Polish_CI_AS")
但没有结果。
现在我有点不知道该怎么办。我想知道为什么这个问题会出现在 windows 上,而在 linux 上没有,我该如何解决这个问题。
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)