回答

收藏

为什么Python的DB-API没有 egin”操作?

技术问答 技术问答 236 人阅读 | 0 人回复 | 2023-09-14

在mysql-python使用游标时,我曾调用 BEGIN;”,“ COMMIT;”和“ ROLLBACK;明确如下:
( B% C( H, T' _try:    cursor.execute("BEGIN;")    # some statements    cursor.execute("COMMIT;")except:    cursor.execute("ROLLBACK;")然后,我发现基本连接对象有相应的方法:# @% R8 H- B% h2 q  C' Z( U: J
try:    cursor.connection.begin()    # some statements    cursor.connection.commit()except:    cursor.connection.rollback()在检查DB-API8 C# Y) K9 [9 [7 W
PEP我发现它甚至没有提到连接对象begin()方法。, ^5 z+ t6 x& q" S  i5 G& }
顺便说一句,使用这种方法时,Mysql-python会引发DeprecationWarning。例如,sqlite3.connection根本没有这种方法。* G' M9 a& D) c
问题是为什么PEP中没有这种方法?该语句是否是可选的,是否足以调用commit()?4 h# H5 T3 ]: Z; o
                                                                " |2 s7 K& I3 y
    解决方案:                                                               
  n2 |8 g; @. k# ~: J$ P! L                                                                决定回答自己:
/ X8 r3 E# X+ K4 N5 G( q一个关于DB API$ T9 @) a) p, c* t+ s) ]( }' _. ?/ ]/ ~
2.0交易线程在Python列表,并从书中明显摘录如下SQL完全参考,让我想起来DB
7 v7 Z9 Y; r( D$ V% HAPI工具SQL标准行为:
- B: Y3 E2 ]* V6 u% C7 J- s$ ^; P) ESQL标准(SQL1)第一个版本是基于DB早期版本中的事务支持定义了隐藏的事务模式。只支持隐藏模式COMMIT和ROLLBACK语句。SQL第一条用户或程序自动执行的事务SQL从句子开始到执行COMMIT或ROLLBACK时间结束了。一项事务的结束隐约启动了一项新事务。- V5 Z/ N6 v: j
当RDBSM支持自动提交模式并且当前连接处于该模式时,显式事务处理模式(SQL2和SQL:1999)似乎很方便。
分享到:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则