卡在我遇到错误ORA-01036的时候:使用cx_Oracle&Python3.6.8在Oracle数据库中执行更新命令时,非法的变量名称/编号。
我想使用CSV文件(db_results.csv)中变量的值并执行更新命令。
db_results.csv文件如下所示:
id, order_id, product, Courier, state
01, ORD987, Keyboard, DHL, TX
02, ORD976, Charger, Blue Dart, NY
我的代码:
con = cx_Oracle.connect("abc/abc@abc")
cur = con.cursor()
with open(r'D:\db_results.csv') as file:
next(file)
for line in file:
x = line.replace('\n', ' ').replace('\r', '')
columns = x.split(",")
y = columns[1]
SQL = "update inventory set model='301547' where order_id = '?'"
cur.execute(SQL, y)
con.commit()
con.close()
cx_Oracle中是否有用于UPDATE的任何特定语法?试图找到用于此目的的示例,但到目前为止未找到任何示例。
ORA-01036的加注是由于oracle占位符的类型错误,因此更喜欢使用冒号开头的整数,例如:1
,:2
不要忘了修剪第二个占位符的值,以消除空格包围值的空白 y
无需将参数嵌入DML中,而是将其转换为元组,例如 (301547, y)
...
with open(r'D:\db_results.csv') as file:
next(file)
for line in file:
x = line.replace('\n', ' ').replace('\r', '')
columns = x.split(",")
y = columns[1]
SQL = "UPDATE inventory SET model=:1 WHERE order_id = TRIM(:2)"
cur.execute(SQL, (301657, y))
con.commit()
con.close()
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句