Pymssql, как его использовать для чтения юникодных данных из MSSQL2008 - PullRequest
4 голосов
/ 24 февраля 2011

Я использовал pymssql-1.0.2 и freetds-0.82.7 на ubuntu-10.10. Кроме того, у меня есть сервер mssql2008 на Windows-7. Я могу соединиться с mssql из Ubuntu, используя pymssql и freetds. Но я не могу получить данные Unicode из базы данных mssql. Сортировка базы данных - 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 не может прочитать данные, которые находятся вне диапазона кодовой страницы.

Как получить данные Unicode, хранящиеся в базе данных mssql? Пожалуйста, дайте руку!

С уважением, Orgil

1 Ответ

2 голосов
/ 25 февраля 2011

Это действительно данные Unicode?Т.е. столбец cc_Name varchar или nvarchar?Похоже, это varchar - в этом случае попробуйте использовать cp1251 или windows-1251 в качестве кодировки вместо iso-8859-1.

...