欢迎访问 生活随笔!

生活随笔

当前位置: 首页 >

mysql的事务操作

发布时间:2023/12/31 47 豆豆
生活随笔 收集整理的这篇文章主要介绍了 mysql的事务操作 小编觉得挺不错的,现在分享给大家,帮大家做个参考.

原子操作:全部执行完,如果执行不完就回滚到执行前的状态.

mysql的事物操作具有原子性

数据库支持的引擎适用场景
MysqlINNODB存储引擎多表关联时的数据增删改查
  单表的多次操作

mysql支持的最基本的原子操作[5]

CURD

C:create(insert)插入操作

U:update,更新操作

R:read(select)查询操作

D:delete删除操作

 

[3]mongodb 4.0+ 已经开始支持事务了。

概念上:

原子操作≠事物操作

事物操作叫原子性操作,而不是原子操作

下面是两个示意图:

注意:

谈到事物操作,可以有两种意思:

一种意思是web的事物操作,例如Django的装饰器@transaction.atomic

一种意思是mysql数据库本身支持的事物操作,

阅读资料时需要联系上下文搞清楚到底是指哪一种意思.

 

开源包对回滚的支持如何?

开源包显式支持/隐式
MySQLdb

显式[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的事务操作的全部内容,希望文章能够帮你解决所遇到的问题。

如果觉得生活随笔网站内容还不错,欢迎将生活随笔推荐给好友。