mysql的事务操作
原子操作:全部执行完,如果执行不完就回滚到执行前的状态.
mysql的事物操作具有原子性
数据库 | 支持的引擎 | 适用场景 |
Mysql | INNODB存储引擎 | 多表关联时的数据增删改查 |
单表的多次操作 |
mysql支持的最基本的原子操作[5]
CURD
C:create(insert)插入操作
U:update,更新操作
R:read(select)查询操作
D:delete删除操作
[3]mongodb 4.0+ 已经开始支持事务了。
概念上:
原子操作≠事物操作
事物操作叫原子性操作,而不是原子操作
下面是两个示意图:
注意:
谈到事物操作,可以有两种意思:
一种意思是web的事物操作,例如Django的装饰器@transaction.atomic
一种意思是mysql数据库本身支持的事物操作,
阅读资料时需要联系上下文搞清楚到底是指哪一种意思.
开源包对回滚的支持如何?
开源包 | 显式支持/隐式 |
|
显式[7] Python>3.4不支持 |
Pymysql | 隐式 |
----------------------------------------------------------------------------测试回滚效果-----------------------------------------------------------------------------
pymysql_test.py
#!/usr/bin/env python
#coding:utf-8import tornado.ioloop
import tornado.web #导入tornado模块下的web文件
import pymysql #导入数据库模块class khdHandler(tornado.web.RequestHandler):def get(self):#连接数据库conn = pymysql.connect(host='127.0.0.1', port=3306, user='appleyuchi', passwd='appleyuchi', db='employees',charset='utf8')# 创建游标cursor = conn.cursor(cursor=pymysql.cursors.DictCursor)#获取存储过程(函数)的返回值effect_row = cursor.execute("UPDATE employees SET first_name='Georgi2' WHERE emp_no = '10001'")effect_row = cursor.execute("UPDATE employees2 SET first_name='Georgi2' WHERE emp_no = '9999'")fhuizhi = cursor.fetchone()print(fhuizhi)# 提交,不然无法保存新建或者修改的数据conn.commit()# 关闭游标cursor.close()# 关闭连接conn.close()self.write("欢迎访问")settings = { #html文件归类配置,设置一个字典"template_path":"views", #键为template_path固定的,值为要存放HTML的文件夹名称"static_path":"statics", #键为static_path固定的,值为要存放js和css的文件夹名称
}#路由映射
application = tornado.web.Application([ #创建一个变量等于tornado.web下的Application方法(r"/khd", khdHandler),
],**settings) #将html文件归类配置字典,写在路由映射的第二个参数里if __name__ == "__main__":#内部socket运行起来application.listen(8000) #设置端口tornado.ioloop.IOLoop.instance().start()
pymysql的事物操作原子性测试:
数据集来自[9]
python pymysql_test.py
浏览器打开:
http://127.0.0.1:8000/khd
查看数据库employees中的employees表格,
会发现emp_no数据的first_name没有改变,具备回滚能力.
---------------------------------------------------------------------------------------------------------------------------------------------------------
总结:
用python交互mysql,你不需要关心原子性事物操作,pymysql的作者都帮你考虑好了.
这玩意儿就是面试有用,上班时基本没用.
#--------------------------------------------------------------------------------------------------------------------------------------
Reference:
[1]事务 --- 一般用在哪里
[2]python-django中使用事务以及小坑
[3]关于mongodb事务的问题
[4]数据库的基本原子操作
[5]数据库的基本原子操作
[6]事务和原子操作
[7]MySQL Python tutorial
[8]mysql(九)事务操作(回滚)
[9]mysql练习用的数据集下载
mysql的事务操作相关推荐
- python 多人连接mysql 进行事务操作 对mysql加锁与释放锁
python 多人连接mysql 对mysql进行事务操作 对mysql加锁与释放锁 下面这个是user1代码块 # -*- coding: utf-8 -*- # user1 import pymy ...
- ThinkPHP6项目基操(19.实战部分 Mysql模型事务操作)
模型事务操作 前言 1. Mysql数据库注意 2. thinkPHP模型使用事务 前言 事务操作在复杂的数据库操作的时候尤为重要,特别是在操作多张表的时候,如果某一步骤出错了,就会导致有脏数据,会很 ...
- MySql的事务操作与演示样例
事务就是一个逻辑工作单元的一系列步骤. 事务是用来保证数据操作的安全性 事务的特征: Atomicity(原子性) Consistency(稳定性,一致性) Isolation(隔离性) Durabi ...
- 事务操作 mysql的事务操作
事务操作 举例: create table my_account( id int unsigned not null primary key auto_increment, account varch ...
- mysql 一对一关联查询_学习ThinkPHP的第20天--MySQL事务操作、查询事件、一对一关联...
之所以从20天才开始写随笔记是因为之前没搞自己的博客 从20天开始记录我在ThinkPHP中的点点滴滴 1.MySQL事务操作 /**事务操作*/ //startTrans启动事务.rollback回 ...
- mysql事务操作——transaction
[实施工程师]必备技能--事务操作 目录 [实施工程师]必备技能--事务操作 mysql开启事务: mysql提交事务: mysql事务回滚: 实例: 1.开启事务并执行[增删改]语句测试 2.回滚测 ...
- mysql 事务操作详细实例介绍
1.打开mysql 本人由于重装了系统之后,不能快速正确找到mysql客户端,所以需要使用cmd窗口来运行命令行程序. 如果在打开cmd窗口时就使用mysql命令,会出现如下错误: 这是由于没有目前还 ...
- mysql数据库事务的回滚操作
事务的基本概念:如果一个包含多个步骤业务操作,被事务管理,那么这些操作要么同时成功,要么同时失败. mysql数据库中事务默认自动提交 事务提交两种方式: 自动提交:一条DML(增删改)语句会自动提交 ...
- mysql 事务操作与锁机制
mysql 事务操作与锁机制
最新文章
- 某云数据中心网络解决方案(分享二十一)
- 批量插入以及数据存在重复就进行更新操作
- hpm128无法共享打印_打印机共享后不能打印的解决方法,文末有难题有高手能解决的?...
- 云原生 | 阿里巴巴的Dapr实践与探索
- RHEL6 Tiny Linux 的制作
- 【转】常用 blas 函数
- Security+Oauth2权限认证(案例 源码)
- 开关电源三种拓扑的产生
- UML2.0详细教程(附示例)
- Arcgis 区位图绘制
- 评弱水三千,该取几瓢饮?———贪恋还是专情
- 【CV细粒度识别论文总结】The Devil is in the Channels: Mutual-Channel Loss for Fine-Grained Image Classification
- 2018时间的朋友罗振宇跨年演讲主题是什么?
- (已解决)579B但答案仍旧错误terminate called after throwing an instance of ‘ std::bad_array_length‘,
- Linux之安装Nginx(安装包方式)
- 如何改域的NETBIOS名?
- 小白学习HCIA2022
- linux 中的DNS服务
- Nature Microbiology:植物根系分泌物影响菌群结构
- 解决网站因调用谷歌字体库打开慢(适用wordpress和调用谷歌内容的网站)
热门文章
- RAC的搭建(一)--安装环境准备
- Android Studio解决未识别Java文件(出现红J)问题
- mysql 优化20点
- 配置 Hdp 4 Window 中的一些问题
- JavaScript 表单验证
- Cheatsheet: 2011 12.01 ~ 12.12
- 先锋展示了可爱鸟形车载机器
- Knowledge Graph Alignment Network with Gated Multi-Hop Neighborhood Aggregation-学习笔记
- ZooKeeper入门(一)
- Android 本地tomcat服务器接收处理手机上传的数据之案例演示