为什么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)似乎很方便。 |
|
|
|
|
|