标签:表的操作 来源 llb mon div ping commit serial 隔离级别
1、pymysql默认开启事务,对于表的数据的操作需要使用commit,
但是如果删库删表的操作就不一样,没办法rollback
一般来说用如下方法使用事务,如果不需要使用事务则不用rollback,直接commit就可以
try:
cursor.execute("update moneyTable set money = money - 50 where name = ‘小明‘")
#如果小花的账户出问题了 无法更新数据 那就需要回滚
cursor.execute("update moneyTable set money = money + 50 where name = ‘小花‘")
conn.commit()
except:
conn.rollback()
2、select语句需要commit吗。
首先,mysql如果直接select,是默认自动commit,而pymysql是默认开启事务(需要手动commit)
而是否要commit取决于师傅需要重复读, repeatable read,如果每次都要读取最新的更新,则需要commit。
如果要在事务内重复读,则不需要commit,这与隔离级别有关。
mysql默认隔离级别是repeatable read,
四个级别分别是 read uncommited 很少用, read commited也叫nonrepeatable read,事务内不可重复度。 repeatable read解决了脏读,
3、
一般来说connection可以保持,每次执行前使用conn.ping(reconnect=True)进行测试
而cursor每次使用后都要关闭,最好使用
with conn.execute(sql) as cursor
标签:表的操作 来源 llb mon div ping commit serial 隔离级别
原文地址:https://www.cnblogs.com/yjybupt/p/14926120.html