前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >pymysql事务

pymysql事务

作者头像
灯珑LoGin
发布2022-10-31 09:55:27
1.2K0
发布2022-10-31 09:55:27
举报
文章被收录于专栏:龙进的专栏

事务是数据库管理系统执行过程中的一个逻辑单位,由一个有限的数据库操作序列构成。事务是为了保证数据的一致性。比如银行转账,假如有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):已被提交的事务对数据库的修改应永久保存在数据库中。

代码语言:javascript
复制
#事务

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('执行失败!数据已成功回滚!')
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2020年9月10日2,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
数据库
云数据库为企业提供了完善的关系型数据库、非关系型数据库、分析型数据库和数据库生态工具。您可以通过产品选择和组合搭建,轻松实现高可靠、高可用性、高性能等数据库需求。云数据库服务也可大幅减少您的运维工作量,更专注于业务发展,让企业一站式享受数据上云及分布式架构的技术红利!
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档