You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python向Oracle表插入数据无报错但SQL Developer查询为空

问题核心原因

你遇到的问题是Oracle事务未提交导致的:Oracle数据库默认使用手动事务提交模式,你使用的Python Oracle连接库(通常为cx_Oracle或oracledb)默认autocommit参数为关闭状态,你执行的INSERT操作仅在当前Python连接的会话中可见,未持久化到数据库,其他会话(包括Oracle SQL Developer的连接)受事务隔离性限制,无法查询到未提交的数据。同一连接内执行SELECT能看到结果是因为当前会话可以读取自身未提交的变更。


修复方案
  • 方案1:手动提交事务(推荐)
    所有INSERT操作执行完成后,调用连接的commit方法提交事务即可,修改你的INSERT代码如下:
cursor = conn.cursor()

data = [
('Mina', 20),
('Minoo', 32),
('Sara', 22),
('Ehssan', 25),
('Ladan', 55)
]

for row in data:
     cursor.execute("""
          insert into INSERT_TEST (FISRT_COLUMN, SECOND_COLUMN)
          values (:1, :2)""", row)
# 新增事务提交语句
conn.commit()

如果执行过程中需要撤销变更,可以调用conn.rollback()回滚所有未提交的操作。

  • 方案2:开启自动提交
    创建数据库连接时设置autocommit=True,后续所有执行的SQL语句会自动提交,无需手动调用commit方法,示例如下:
# cx_Oracle与新版oracledb库用法一致
import oracledb
conn = oracledb.connect(
    user="你的数据库用户名",
    password="你的数据库密码",
    dsn="你的数据库连接DSN",
    autocommit=True
)

注意:批量操作场景下手动提交性能远优于自动提交,优先推荐使用方案1。


验证步骤

提交事务后,在Oracle SQL Developer中执行查询前可以先执行COMMIT;刷新会话状态,再执行SELECT * FROM INSERT_TEST;即可看到插入的数据。

内容的提问来源于stack exchange,提问作者Sara Moradi

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.03 09:39:04