Pymssql如何从MSSQL2008读取Unicode数据

4 投票
1 回答
4202 浏览
提问于 2025-04-16 12:26

我在ubuntu-10.10上使用了pymssql-1.0.2和freetds-0.82.7。同时,我在windows-7上有一个mssql2008服务器。我可以通过pymssql和freetds从ubuntu连接到mssql。但是,我无法从mssql数据库获取unicode数据。数据库的排序规则是Cyrillic_General_CI_AS。

我的freetds.conf文件是这样的:

[mssql2008]
    host=10.0.0.34
    port=1433
    tds version=7.0

我的代码是这样的:

   conn = pymssql.connect(host=10.0.0.34\mssql2008, user=***, password=***, database=eoffice, as_dict=true, charset='iso-8859-1')
   crms = conn.cursor()
   crms.execute('SELECT cc_Name FROM tblHR_CodeClass')
   for row in crms.fetchall():
      raise u"Succeeded! Test data: " + row['cc_Name']
      break

我期望的结果是:“Өмнөговь аймаг”,但实际结果是:“ªìíºãîâü àéìàã”。

当我使用'UTF-8'字符集时,fetchall()调用会抛出一个错误,表示utf8无法读取超出代码页范围的数据。

我该如何获取存储在mssql数据库中的unicode数据?请帮帮我!

祝好,
Orgil

1 个回答

2

这真的是Unicode数据吗?也就是说,cc_Name这一列是varchar类型还是nvarchar类型?听起来像是varchar类型——如果是这样的话,可以试试用cp1251或者windows-1251作为字符集,而不是iso-8859-1。

撰写回答