在cx_oracle中使用execute时INSERT无效,如何解决?

2 投票
2 回答
12790 浏览
提问于 2025-04-16 15:36

我刚开始接触cx_oracle。现在我已经建立了连接,并且可以使用execute命令创建和删除表。

我遇到的问题是,当我尝试在execute中使用“INSERT INTO ...”时,没有出现错误,但也没有存储任何值(我通过在shell中使用sqlplus检查确认了这一点)。我使用的代码是:

table_name = "T1"
column = "D"
insert_value = "test value"

sqlcode = "INSERT INTO "+table_name+" ("+column+") VALUES ('"+insert_value+"')"
cursor.execute(sqlcode)

请帮帮我,任何帮助都非常感谢。

提前谢谢你们。J

2 个回答

2

奇怪的是,你的代码没有报错;当然,前提是你没有(可怜地)调用了游标对象的 connect

在你所有的代码之前,你需要有类似下面的内容:

conn = cx_Oracle.connect(usr, pwd, url)
cursor = conn.cursor()

接下来,把 connect.execute(sqlcode) 替换成 cursor.execute(sqlcode)

12

为什么 cursor.commit 能用,而 Cursor 里的方法却没有 commit 呢?其实,commit 这个方法是连接(connections)里有的,所以应该是这样:

    connection.commit()

当你使用 cursor.commit() 时,会返回一个错误信息:
AttributeError: 'cx_Oracle.Cursor' 对象没有 'commit' 这个属性

撰写回答