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

为什么Python的DB-API中的连接没有“ egin”操作?

汝飞
2023-03-14
问题内容

在mysql-python中使用游标时,我曾经调用“ BEGIN;”,“ COMMIT;”和“ ROLLBACK;”。明确如下:

try:
    cursor.execute("BEGIN;")
    # some statements
    cursor.execute("COMMIT;")
except:
    cursor.execute("ROLLBACK;")

然后,我发现基础连接对象具有相应的方法:

try:
    cursor.connection.begin()
    # some statements
    cursor.connection.commit()
except:
    cursor.connection.rollback()

在检查DB-API
PEP时,
我发现它甚至没有提到连接对象的begin()方法。

顺便说一句,使用该方法时,Mysql-python会引发DeprecationWarning。例如,sqlite3.connection根本没有该方法。

问题是为什么PEP中没有这种方法?该语句是否是可选的,是否足以调用commit()?


问题答案:

决定回答自己:

一个关于DB API
2.0交易线程
在Python列表,并从书中明显摘录如下SQL完全参考,使我想到DB
API工具SQL1标准的行为:

SQL标准(SQL1)的第一个版本基于DB2早期版本中的事务支持定义了隐式事务模式。在隐式模式下,仅支持COMMIT和ROLLBACK语句。SQL事务自动从用户或程序执行的第一条SQL语句开始,到执行COMMIT或ROLLBACK时结束。一个事务的结束隐式地启动了一个新事务。

当RDBSM支持自动提交模式并且当前连接处于该模式时,显式事务处理模式(SQL2和SQL:1999)似乎很方便。



 类似资料:
  • 问题内容: 我来自C语言,正在学习Python。缺乏显式的类型安全性令人不安,但是我已经习惯了。面对动态语言的所有优点,缺少内置的基于契约的编程(纯抽象类,接口)的不足是必须习惯的。 但是,无法请求const- cortectness使我疯狂!为什么Python中没有常量?为什么不鼓励使用类级常量? 问题答案: C和Python属于两种不同的语言类别。 前一个是 静态 类型的。后者是 动态的 。

  • 注意:我不一定要寻找下面描述的具体示例问题的解决方案。我真的很感兴趣,为什么这在java 8中是不可能的。 Java流是懒惰的。最后,他们有一个单一的终端操作<我的解释是,这个终端操作将通过流提取所有值。没有任何中间操作可以做到这一点。为什么没有中间操作通过流拉入任意数量的元素?类似这样: 当下游操作尝试推进流一次时,中间操作可能尝试多次(或根本不推进)上游。 我会看到几个用例: (这些只是示例。

  • 本文向大家介绍连接器API的作用是什么?相关面试题,主要包含被问及连接器API的作用是什么?时的应答技巧和注意事项,需要的朋友参考一下 答:一个允许运行和构建可重用的生产者或消费者的API,将Kafka主题连接到现有的应用程序或数据系统,我们称之为连接器API。 Apache Kafka对于新手的面试问题:21, 23, 25, 26, 27, 28, 29, 30 Apache Kafka对于有

  • 问题内容: 在Java has 方法中,但是,它仅在诸如或的关联容器中使用。为什么要这样设计?具有方法的界面看起来更优雅。 问题答案: 在我看来,主要的论据是,可以为任何Java对象计算出一个定义明确的默认值,以及一个同样定义明确的。根本没有充分的理由要保留所有对象的该功能,当然也有很多理由 不 保留此功能。因此,这本书毫无疑问。

  • 为了防止实现细节泄漏,可以实现,而不是返回,然后需要从接口实现。因此,无论内部数据结构如何管理,对元素的访问都是通过进行的。 对于Java8,可能希望将添加到。(另请参阅《Java8lambdas》一书中关于支持的建议)。虽然添加方法并不困难(我也读过关于为什么Iterable不提供流的问题),但奇怪的是Java没有为添加接口来镜像思想。(好吧,可能有一个不同的名称,因为是为了永远使用CORBA的