事务是数据库管理系统执行过程中的一个逻辑单位,由一个有限的数据库操作序列构成。事务是为了保证数据的一致性。比如银行转账,假如有A、B两个账户,从A账户转100元给B账户至少需要两次数据库修改操作,即A账户余额减少100元和B账户余额增加100元。如过在这过程中发生了一些意外,比如断电断网等,导致A账户余额减少后,B账户无法增加余额,那么A账户就不应该减少100元,在生活中的例子就是转账失败,存款退回原账户。如果没有事务,在执行A账户余额减少后程序意外终止(如宕机或者系统资源不足等),导致A账户白白损失了100元,这显然是不可接受的。有了事务,就能保证这两项操作要么都完成,要么都不能完成。

数据库事务有四个特性,习惯上称之为ACID特性:

1、原子性(Atomicity):事务作为一个整体被执行,包含在其中的对数据库的操作要么全部执行,要么都不执行

2、一致性(Consistency):事务应确保数据库的状态从一个一致状态转变为另一个一致状态。一致状态的含义是数据库中的数据满足完整性约束。

3、隔离性(Isolation):多个事务并发执行时,一个事务的执行不应影响另一个事务的执行。

4、持久性(Durability):已被提交的事务对数据库的修改应永久保存在数据库中。

#事务

import pymysql

host = 'localhost'
username = 'test'
password = 'test'
db_name = 'test'

connect = pymysql.connect(host, username, password, db_name)
cursor = connect.cursor()

#正确的sql语句
insert_sql1 = 'insert into users(name, age) values ("", 1)'
#错误的sql语句
insert_sql2 = 'insert into users(name, age) values (1)'
try:
    cursor.execute(insert_sql1)
    cursor.execute(insert_sql2)
    #执行成功提交数据
    connect.commit()
except Exception as e:
    #执行失败回滚数据
    connect.rollback()
    print('执行失败!数据已成功回滚!')

你也可能喜欢

发表评论