Pythoncx_oracleを使用してテーブルのエントリを更新しようとしています。この列の名前は「template」で、データ型はCLOBです。
これは私のコードです:
dsn = cx_Oracle.makedsn(hostname, port, sid)
orcl = cx_Oracle.connect(username + '/' + password + '@' + dsn)
curs = orcl.cursor()
sql = "update mytable set template='" + template + "' where id='6';"
curs.execute(sql)
orcl.close()
これを行うと、文字列リテラルが長すぎるというエラーが表示されます。テンプレート変数には約26000文字が含まれています。どうすればこれを解決できますか?
編集:
私はこれを見つけました:http://osdir.com/ml/python.db.cx-oracle/2005-04/msg00003.html
だから私はこれを試しました:
curs.setinputsizes(value = cx_Oracle.CLOB)
sql = "update mytable set template='values(:value)' where id='6';"
curs.execute(sql, value = template)
「ORA-01036:不正な変数名/番号エラー」が表示されます
Edit2:
これが私のコードです:
curs.setinputsizes(template = cx_Oracle.CLOB)
sql = "update mytable set template= :template where id='6';"
print sql, template
curs.execute(sql, template=template)
ORA-00911:無効な文字エラーが発生しました。