Unicode вставка русского языка в Oracle DB с Python 2.7 - PullRequest
0 голосов
/ 05 февраля 2020

У меня проблема с unicode русским словом. У меня есть python 2,7.

# -*- coding: utf-8 -*-
from __future__ import print_function
import cx_Oracle
import csv
import sys
# sys.setdefaultencoding() does not exist, here!
reload(sys)  # Reload does the trick!
sys.setdefaultencoding('UTF8')
teh2 = ['Col1','Col2']
va = [(108, u"русский")]
for i in va:
    cur.execute("INSERT INTO Mytable("+ teh2[0] + "," + teh2[1] +") VALUES('"+ str(i[0]) + "', '"+ str(i[1]) + "')")
con.commit()
con.close()

результат: enter image description here

1 Ответ

0 голосов
/ 05 февраля 2020

См. Наборы символов и поддержка национальных языков (NLS) в документации по cx_ Oracle. Возможно, вы захотите подключиться, используя что-то вроде:

import cx_Oracle
connection = cx_Oracle.connect(connectString, encoding="UTF-8", nencoding="UTF-8")

Набор символов базы данных также играет роль, так как вставленные данные будут отображаться в этот набор символов.

Что касается конкатенации строк - как отмечено в комментарии, никогда, никогда не делайте этого. См. Предупреждение и ссылки в SQL Запросы .

...