更新日志:
- [2021-11-16]
文章发布
说明:
- 本文地址
- 《【Python】—— cx_oracle批量执行时,使用字典做每行数据的ORA-01036问题》https://blog.csdn.net/maixiaochai/article/details/121357554
- 关于 MaiXiaochai
- CSDN:https://blog.csdn.net/maixiaochai
- GitHub:https://github.com/MaiXiaochai
1. 核心原因
- 作为数据的字典中,有SQL中不存在的字段(或变量)名
-
表结构
CREATE TABLE "FLXUSER"."TEST_DEMO" ("NAME" NVARCHAR2(100), "SCORE" NUMBER ); COMMENT ON TABLE FLXUSER.TEST_DEMO IS '测试用表,2021-11-16'; -
Python代码
def demo(): sql = 'insert into test_demo (name, score) values(:name, :score)' # 字典中的 gender不存在于SQL绑定的变量中 data1 = [ {'name': 'zhang', 'score': 100, 'gender': 'female'}, {'name': 'yuzhibo', 'score': 90, 'gender': 'male'}, ] # 正常数据 data2 = [ {'name': 'zhang', 'score': 100}, {'name': 'yuzhibo', 'score': 90} ] db = OracleUtils(**db_cfg) db.executemany(sql, data1) db.commit() if __name__ == '__main__': demo() -
错误情况: 字典中包含未绑定的key,这里用data1演示
- 报错 :ORA-01036: illegal variable name/number
-
正常情况: 使用data2演示
- 执行成功
- 有数据
The end.



