Python使用cx_Oracle执行UPDATE语句触发ORA-01036错误排查
问题原因及解决方法
错误根源:参数传递格式错误
你在执行cursor.execute()时,给参数额外套了一层括号,导致驱动无法正确识别绑定变量的数量和位置。原代码里的([pre_after_price, volume, ticker])是一个包含单个列表元素的元组,而Oracle数据库驱动期望接收的是一维的参数序列(直接的列表或元组)。修正后的执行代码:
# 使用一维列表传递参数 cursor.execute(upd, [pre_after_price, volume, ticker]) # 或者使用元组格式(推荐,因为元组不可变更安全) cursor.execute(upd, (pre_after_price, volume, ticker))补充说明:
你的UPDATE语句采用的是位置绑定变量:1、:2、:3,这种绑定方式要求传入的参数序列长度和绑定变量数量严格匹配。只要去掉外层多余的括号,让参数直接以一维列表或元组传入,就能解决ORA-01036: illegal variable name/number的错误。
内容的提问来源于stack exchange,提问作者Landon Statis
相关产品推荐
相关产品推荐

