Oracle 10gデータベースにデータを書き込むように、既存のスクリプトを更新する必要があります。スクリプトとデータベースは両方とも同じSolaris10(Intel)マシンで実行されます。Pythonはv2.4.4です。
私はcx_Oracleを使用しており、データベースの読み取り/書き込みに問題はありません。しかし、私が書いているデータには、正しく書かれていないアクセント付きの文字が含まれています。アクセントのある文字が逆さまの疑問符に変わります。
値は、次のコードを使用してバイナリファイルから読み取られます。
class CustomerHeaderRecord:
def __init__( self, rec, debug = False ):
self.record = rec
self.acct = rec[ 84:104 ]
また、変数の内容がacct
画面に正しく表示されます。
以下は、dbに書き込むコードです(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
しません。私はユニコードとUTF-8についてたくさんのことをグーグルで検索しましたが、私を助けるものはまだ見つかりませんでした。データベースでは、NLS_LANGUAGEは「American」であり、NLS_CHARACTERSETは「AL32UTF8」です。
acct
挿入前/挿入中に変数に対して「何かをする」必要がありますか?