有人能帮助如何使用python cx_oracle会话池将单行插入oracle表中吗?我看到下面的代码有一些问题。
Type error: expecting string or object Name Null? Type ---- ----- ------------ ID NUMBER(38) NAME VARCHAR2(30)
我可以看到您的代码有两个问题。
第一个原因是您没有正确调用
cursor.execute
。您正在行中创建一个元组sql=("insert into exm(id,name) values(:1, :2)", rows)
然后将其传递给
cursor.execute(sql)
这与运行以下行的效果相同(注意额外的括号(:
cursor.execute(("insert into exm(id,name) values(:1, :2)", rows))
当你真的想运行这行时,它没有额外的括号:
cursor.execute("insert into exm(id,name) values(:1, :2)", rows)
我建议您将
sql
设置为仅针对数据库运行的SQL字符串,并将rows
分别传递给cursor.execute
。sql="insert into exm(id,name) values(:1, :2)" cursor.execute(sql, rows)
第二个问题是,您似乎希望同时插入多行。您可以通过将变量命名为
rows
并为其分配一个元组的单元素列表来提示这一点。要同时插入多行,您需要使用cursor.executemany
,而不是cursor.execute
:sql="insert into exm(id,name) values(:1, :2)" cursor.executemany(sql, rows)