NLS_CHARACTERSET = AL32UTF8
но cx_Oracle выдает
>>> conn.encoding
'US-ASCII'
как это можно исправить ?
>>> conn.encoding
'US-ASCII'
# -*- coding: utf-8 -*-
import cx_Oracle
login = ''
passwd = ''
ip = ''
port_ora = ''
bd = ''
try:
connstr = login+'/'+passwd+'@'+ip+':'+port_ora+'/'+bd
conn = cx_Oracle.connect(connstr)
cursor = conn.cursor()
except Exception, e:
print e
def to_ora_unistr(self):
tou = self.encode('unicode_escape').replace('\\u','\\')
return tou
orderno = 123465
comments = to_ora_unistr('Русская стринга')
cursor.execute('''INSERT INTO orders (orderno,comments)
VALUES (:orderno,unistr(:comments))''',
{
'orderno' : orderno,
'comments' : comments,
}
)
conn.commit()
agalenпосле нее:
Попробуй задать NLS_LANG=American_America.AL32UTF8
>>> conn.encoding
'UTF-8'
agalen
Попробуй задать NLS_LANG=American_America.AL32UTF8
Где задается этот параметр? Как его задать?
os.environ['NLS_LANG'] = '...'
import os os.environ['NLS_LANG'] = 'American_America.AL32UTF8'
#!/usr/bin/env python #-*-coding:utf8-*- import os os.environ["NLS_LANG"] = "Russian.AL32UTF8" #подключение def dbopen(self): try: tns = cx_Oracle.makedsn("oracle.ххх.ru",1521,"jdedb") print tns self.ora = cx_Oracle.connect('%s/%s@%s'%(self.dbuser,self.dbpwd,tns)) self.db = self.ora except Exception,e: raise RuntimeError,e.message return 1 # уже при выполнении вставки sql = u"insert into %(table)s (%(fields)s) values (%(values)s)"%{"table":self.chema+'.'+self.table,"fields":fields,"values":values} cur = db.cursor() try: cur.execute(sql.encode("cp1251")) except Exception,e: print e.__str__() print sql.encode("cp1251") raise e