浅析Python中MySQLdb的事务处理功能


Posted in Python onSeptember 21, 2016

前言

任何应用都离不开数据,所以在学习python的时候,当然也要学习一个如何用python操作数据库了。MySQLdb就是python对mysql数据库操作的模块。今天写了个工具,目的是把csv中的数据插入到数据库中去。其中有一部分,是需要分别向两张表中插入两条数据,如果第二张表中的数据已经存在,那么第一张表中的数据也不需要插入。

然后通过百度查找发现,其实MySQLdb库,自带了事务处理的功能,pymysql库也是一样。

conn = MySQLdb.connect()返回一个连接对象

cursor = conn.cursor()返回一个游标对象

当我们使用cursor.execute(SQL)执行一条Insert/Update/Delete语句后,我们需要使用conn.commit()提交事务,否则,语句不会生效。

其实我们常用的commit() ,就是包含了一种事务处理的概念,如果你在commit()之前,执行了多条语句,只有当commit()之后,才会全部生效。

那么如果像文章开始提到的那样,执行两条插入语句,我们可以把conn.commit()语句放在两条插入语句执行之后,并放在try语句块内,如果差生异常,我们可以使用:

conn.rollback()

这个语句可以使事务回滚,直到上一条conn.commit()执行之后的位置。

所以,我的代码是这样写的,这里我就简单的写了,并没有用类来封装了:

try:
cursor = conn.cursor()
cursor.execute(insertSQL1)
cursor.execute(insertSQL2)
cursor.close()
conn.commit()
except Exception, e:
cursor.close()
conn.rollback()

总结

这就可以达到我们的目的了。其实更优雅的方法是,对事务处理进行一个封装,将处理过程写在自己的类的方法中,并接受1个SQL语句序列(可能包含1条或多条SQL语句)作为参数,返回事务执行状态即可。以上就是这篇文章的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助。

Python 相关文章推荐
python使用win32com库播放mp3文件的方法
May 30 Python
python 队列详解及实例代码
Oct 18 Python
python爬取淘宝商品详情页数据
Feb 23 Python
Python从单元素字典中获取key和value的实例
Dec 31 Python
Python字符串逆序输出的实例讲解
Feb 16 Python
Python语法分析之字符串格式化
Jun 13 Python
python单例模式的多种实现方法
Jul 26 Python
python中利用numpy.array()实现俩个数值列表的对应相加方法
Aug 26 Python
python能在浏览器能运行吗
Jun 17 Python
Python 如何实现数据库表结构同步
Sep 29 Python
在Windows下安装配置CPU版的PyTorch的方法
Apr 02 Python
Python Pandas数据分析之iloc和loc的用法详解
Nov 11 Python
Python 爬虫学习笔记之多线程爬虫
Sep 21 #Python
Python 爬虫学习笔记之单线程爬虫
Sep 21 #Python
Python 爬虫学习笔记之正则表达式
Sep 21 #Python
Python简单实现安全开关文件的两种方式
Sep 19 #Python
Python打包可执行文件的方法详解
Sep 19 #Python
Python实现拷贝多个文件到同一目录的方法
Sep 19 #Python
利用Python画ROC曲线和AUC值计算
Sep 19 #Python
You might like
用PHP实现小型站点广告管理(修正版)
2006/10/09 PHP
PHP 八种基本的数据类型小结
2011/06/01 PHP
PHP获取当前相对于域名目录的方法
2015/06/26 PHP
PHP基于双向链表与排序操作实现的会员排名功能示例
2017/12/26 PHP
yii2.0框架实现上传excel文件后导入到数据库的方法示例
2020/04/13 PHP
类似框架的js代码
2006/11/09 Javascript
JS分页控件 可用于无刷新分页
2013/07/23 Javascript
ff下JQuery无法监听input的keyup事件的解决方法
2013/12/12 Javascript
javascript学习笔记(六)数据类型和JSON格式
2014/10/08 Javascript
jQuery实现仿QQ空间装扮预览图片的鼠标提示效果代码
2015/10/30 Javascript
JavaScript与jQuery实现的闪烁输入效果
2016/02/18 Javascript
详解 vue.js用法和特性
2017/10/15 Javascript
微信小程序使用request网络请求操作实例
2017/12/15 Javascript
Node.js爬取豆瓣数据实例分析
2018/03/05 Javascript
Next.js实现react服务器端渲染的方法示例
2019/01/06 Javascript
Django数据库操作的实例(增删改查)
2017/09/04 Python
Python动刷新抢12306火车票的代码(附源码)
2018/01/24 Python
用Python实现BP神经网络(附代码)
2019/07/10 Python
使用Pyhton集合set()实现成果查漏的例子
2019/11/24 Python
pytorch 实现打印模型的参数值
2019/12/30 Python
澳大利亚体育和露营装备在线/实体零售商:Find Sports
2020/06/03 全球购物
EJB需直接实现它的业务接口或Home接口吗,请简述理由
2016/11/23 面试题
线程同步的方法
2016/11/23 面试题
工程地质勘察专业大学生求职信
2013/10/13 职场文书
法律专业推荐信范文
2013/11/29 职场文书
平民服装店创业计划书
2014/01/17 职场文书
打架检讨书400字
2014/01/17 职场文书
《理想》教学反思
2014/02/17 职场文书
逃课上网检讨书
2014/02/20 职场文书
数控技校生自我鉴定
2014/03/02 职场文书
模具设计与制造专业求职信
2014/07/19 职场文书
2014年小学教导处工作总结
2014/12/19 职场文书
会计工作岗位职责
2015/02/03 职场文书
社会实践活动报告
2015/02/05 职场文书
二手手机买卖合同范本(2019年版)
2019/10/28 职场文书
Django对接elasticsearch实现全文检索的示例代码
2021/08/02 Python