我必须更新现有脚本,以便将一些数据写入 Oracle 10g 数据库。脚本和数据库都在同一台 Solaris 10 (Intel) 机器上运行。Python 是 v2.4.4。
我正在使用 cx_Oracle 并且可以毫无问题地读取/写入数据库。但是我正在编写的数据包含未正确写入的重音字符。重音字符变成一个倒置的问号。
该值是使用此代码从二进制文件中读取的,位于:
class CustomerHeaderRecord:
def __init__( self, rec, debug = False ):
self.record = rec
self.acct = rec[ 84:104 ]
并且acct
变量的内容正确显示在屏幕上。
下面是写入数据库的代码(acct
值作为val_1
变量传入):
class MQ:
def __init__( self, rec, debug = False ):
self.customer_record = CustomerHeaderRecord( rec, debug )
self.add_record(self.customer_record.acct, self.cm_custid)
def add_record(self, val_1, val_2):
cur = conn.cursor()
qry = "select count(*) from table_name where value1 = :val1"
cur.execute(qry, {'val1':val_1})
count = cur.fetchone()
if count[0] == 0:
cur = conn.cursor()
qry = "insert into table_name (value1, value2) values(:val1, :val2)"
cur.execute(qry, {'val1':val_1, 'val2':val_2})
conn.commit()
该acct
值无法正确进入数据库。我用谷歌搜索了一堆关于 unicode 和 UTF-8 的东西,但还没有找到任何对我有帮助的东西。在数据库中,NLS_LANGUAGE 是“American”,NLS_CHARACTERSET 是“AL32UTF8”。
acct
在插入之前/期间我是否需要对变量“做某事” ?