当前位置: 首页 > 面试题库 >

为什么在执行UPDATE时需要显式提交?

徐景明
2023-03-14
问题内容

这是我的代码

import cx_Oracle

conn = cx_Oracle.connect(usr, pwd, url)
cursor = conn.cursor()
cursor.execute("UPDATE SO SET STATUS='PE' WHERE ID='100'")
conn.commit()

如果删除conn.commit(),该表不会更新。但是对于select语句,我不需要那个conn.commit()。我很好奇为什么?


问题答案:

在DB-
API
规范要求连接到数据库开始新的事务,默认情况下。您必须commit确认所做的任何更改,或rollback放弃它们。

请注意,如果数据库支持自动提交功能,则必须首先将其关闭。

SELECT语句,因为它们从不对数据库进行任何更改,因此不必提交更改。



 类似资料:
  • 问题内容: 的行为似乎取决于的位置。 如果被发送到控制台,则将被行缓冲并在打印换行符后刷新。 如果被重定向到文件,则除非调用缓冲区,否则不会刷新缓冲区。 此外,如果在重定向到文件之前使用过,则随后的(对文件的)写操作将被行缓冲并在换行符之后被刷新。 什么时候是行缓冲的,什么时候需要调用? 每种的最小示例: 问题答案: 刷新取决于其缓冲行为。可以将缓冲设置为三种模式:(完全缓冲:等待,直到可能),(

  • 问题内容: 鉴于: 涉及并编译的语句很好,但是失败: 可以通过提供显式类型参数来解决编译器错误。 Java 8何时需要显式类型参数?意思是,是否存在一种打破类型推断的已知模式? 能和改变,以避免显式类型参数不失使用生成器的配置的收藏家? 更新 : 为什么涉及工作的陈述?它与所涉及的陈述有何不同? 问题答案: 要回答您的问题“意思是,是否存在一种已知的打破类型推断的模式?” 简短地说:当然,有一种模

  • 鉴于: 涉及和的语句编译良好,但失败,原因如下: 编译器错误可以通过提供显式类型参数

  • 《Java并发实践》(Brian Goetz)中对此进行了阐述(重点是我的): 当Future.get抛出中断或超时异常,并且您知道程序不再需要结果时,请用F取消任务uture.cancel Javadoc for Future.get声明(突出显示的是我的): 抛出InterruptedException-如果当前线程在等待时被中断 因此,据我所知:如果我得到InterruptedExcepti

  • 问题内容: 我可以将数据发送到服务器,但是只有在使用FromBody-Attribute时才可以。 为什么无法使用Post从主体自动读取json数据? 后端Web API 前端angularjs 问题答案: 仅因为某事是POST请求,所以没有明确的规则如何传递参数。POST请求仍可以包含URL中编码的查询参数。方法参数应该是“简单”类型(字符串,整数等)的查询参数。 通常,复杂类型应该是POST表

  • 问题内容: 使用Promises时,为什么不能在代码库的其他地方触发并定义? 我不明白为什么,应该在声明诺言的地方本地化逻辑。这是疏忽大意,还是强制执行此参数有好处吗? 我相信执行程序功能应该是可选的,并且它的存在应该确定promise是否封装了解决方案。没有这样的授权,promise的可扩展性就更大,因为您不必立即启动异步。承诺也应该是可重置的。这是1档开关,1或0 或。可以附加许多平行和顺序的