7.3 Python使用事物控制数据库操作

3、使用事物控制数据库操作

1)事务

说明

  • 事务是由一步或几步数据库操作序列组成的逻辑执行单元

  • 事务的 4 个特性:

    • 原子性(Atomicity)
    • 一致性(Consistency)
    • 隔离性(Isolation)
    • 持续性(Durability)

    这 4 个特性简称为 ACID 性。

2)提交事务

说明

  • 使用数据库连接的 commit() 方法提交事务

  • 若游标只是执行 DDL 语句,程序不需要显示提交事务,程序所做的修改会自动生效;

  • 若游标执行 DML 语句,不提交事务则数据修改失效(默认回滚,且在 DML 语句之后的DDL语句也不会生效),因此需要显示提交事务

    • 未提交事务(数据修改未生效)示例:

      conn = sqlite3.connect('test.db')
      c = conn.cursor()
      
      # 执行 DML 语句
      c.execute('insert into user_tb values(null, ?, ?, ?)', ('猪八戒', '234567', 21))
      # 执行 DDL 语句
      c.execute('create table monster_tb(_id integer primary key)')
      
      c.close()
      conn.close()
      

      在这里插入图片描述

    • 提交事务(数据修改生效)示例:

      conn = sqlite3.connect('test.db')
      c = conn.cursor()
      
      # 执行 DML 语句
      c.execute('insert into user_tb values(null, ?, ?, ?)', ('猪八戒', '234567', 21))
      # 执行 DDL 语句
      c.execute('create table monster_tb(_id integer primary key)')
      
      conn.commit()   # 提交事务
      
      c.close()
      conn.close()
      

      在这里插入图片描述

2)回滚事务

说明:事务回滚的两种方式

  • 显示回滚:调用数据库连接对象的 rollback() 方法
  • 自动回滚:系统错误或者强行退出(退出之前,没有提交)
conn = sqlite3.connect('test.db')
c = conn.cursor()

c.execute('insert into user_tb values(null, ?, ?, ?)', ('沙僧', '345678', 22))
c.execute('create table immortal(_id integer primary key)')

conn.rollback()    # 显示回滚事务(若程序不提交事务,默认回滚)

c.close()
conn.close()

在这里插入图片描述

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值