如何使用cx\u oracle python lib执行包含分号的dml语句

rqdpfwrv  于 2021-07-26  发布在  Java
关注(0)|答案(1)|浏览(516)

目前,我使用cursor.execute()方法执行多个dml语句。我使用下列语句拆分语句:;分隔符并将每条语句传递给cursor.execute()方法。在遇到sql语句本身包含分号的一些语句之前,这种方法一直很有效。
我尝试过使用cursor.executemany()方法,通过传递多个语句而不使用分号进行拆分。但它在声明参数值时出错。但是我执行的所有语句都是静态的,我不需要任何序列或迭代。

cursor.executemany(sqlCommands,1,batcherrors=True)

typeerror:应为string、unicode或buffer对象

cursor.executemany(sqlCommands,'',batcherrors=True)

typeerror:参数应该是序列/字典列表,或者是指定执行语句次数的整数
如何使用cx\u oracle python lib处理要执行的sql语句中的分号

pxiryf3j

pxiryf3j1#

你必须去掉后面的分号。它们不是sql语句的一部分,oracle数据库不接受它们—正如您所发现的那样。分号是某些工具(如sql*plus)向数据库发送任何前面的文本的指示符。
如何删除分号将取决于您正在执行的操作。最好限制您的输入文件语法,使您的生活更轻松。示例安装脚本 SampleEnv.py 之所以有效,是因为它要求输入文件语句具有尾部斜杠。
甲骨文公司 executemany() 函数使用多个数据值执行一条语句。它不执行多个语句。请参阅文档batch语句执行和批量加载。

相关问题