Не добавляется текст в mssql server через Python

Есть таблица в БД mssql - в ней collation по умолчанию Cyrillic_General_CI_AI

Из нее , из проблемной колонки старые текстовые данные отображаются в python как ÃÁÓÇ ÐÀ ÀÐÊÁ - это меня не волнует старые данные мне не нужны, просто для информации

Заполняю таблицу новыми данными через python - pymssql из dbf файла
Большинство колонок нормально заполняются, в т ч данные, которые я привожу к str() которые были цифрами в исходном файле, одна колонка, которая была текстом в исходном файле(из негов python Нормально отображается кирилица), не принимается в таблицу. Другие колонки varchar заполняются а эта - нет, тоже varchar выдает ошибку:

pymssql._mssql.MSSQLDatabaseException: 
(102, b"Incorrect syntax near '\\xe7\\xe2\\xf5\\xfa\\xf2\\xe1 \\xe1\\xf2\\xeb\\xe2'.
DB-Lib error message 20018, severity 15:
\nGeneral SQL Server error: Check messages from the SQL Server\n")

При попытках делать какой то encode, и потом снова str - меняются символы но эти данные все равно не принмиаются... пробовал разные сочетания с encode decode и т д.. sp1251 и прочие..

Подскажите к чему привести эти данные чтобы таблица их сьела

  #пробовал тут делать разный encoding utf-8
import pymssql
from dbf_light import Dbf
conn = pymssql.connect(server='serv', user='usr', password='pwd', database='db')
cursor = conn.cursor()




with Dbf.open('sprav2.DBF') as dbf:
   for row in dbf:#   print(row.name, row.id_lpu_rf, row.code,row.region)
          region = str(row.code)[0:2]
          nm = row.name
          # пробовал тут разныет encode к этой строке nm.encode(//)
          #print(nm)

          ext = str(row.id_lpu_rf)
          code = str(row.code)

          conn.cursor().execute("INSERT INTO h_e_meds_rf(created_by_id, name) VALUES(1,"+str(nm)+");")
          # сам код работает, если добавлять другие колонки не , name которые не были строкой в оригинальном дбф
          # пробовал подобрать кодировку через dbfshow меняя исходный файл не вышло
          # напомню старые данные если открывать их тким же execute выглядят так: ÃÁÓÇ ÐÀ ÀÐÊÁ
          # ÃÁÓÇ ÐÀ ÀÐÄÊÁ
          # ÃÁÓÇ ÐÀ "ÀÐÊÊÂÄ"
          # ÃÁÓÇ ÐÀ "ÀÐÊÎÄ ÈÌÅÍÈ Ì. Õ. ÀØÕÀÌÀÔÀ"
       # не смог разобраться какая кодировка у меня в  msssql....





conn.commit()
conn.close()

Ответы (0 шт):