Не добавляется текст в 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()