浅析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解析网页源代码中的115网盘链接实例
Sep 30 Python
Python实现对excel文件列表值进行统计的方法
Jul 25 Python
python通过pip更新所有已安装的包实现方法
May 19 Python
python自动化脚本安装指定版本python环境详解
Sep 14 Python
基于Python开发chrome插件的方法分析
Jul 07 Python
Python一句代码实现找出所有水仙花数的方法
Nov 13 Python
python try except返回异常的信息字符串代码实例
Aug 15 Python
利用python在大量数据文件下删除某一行的例子
Aug 21 Python
Python Numpy 自然数填充数组的实现
Nov 28 Python
matplotlib之多边形选区(PolygonSelector)的使用
Feb 24 Python
使用python+pygame开发消消乐游戏附完整源码
Jun 10 Python
使用qt quick-ListView仿微信好友列表和聊天列表的示例代码
Jun 13 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
如何限制访问者的ip(PHPBB的代码)
2006/10/09 PHP
PHP 调试工具Debug Tools
2011/04/30 PHP
PHP 图片上传代码
2011/09/13 PHP
PHP利用REFERER根居访问来地址进行页面跳转
2013/09/28 PHP
使用laravel和ajax实现整个页面无刷新的操作方法
2019/10/03 PHP
JQuery 学习笔记 选择器之四
2009/07/23 Javascript
JavaScript中null与undefined分析
2009/07/25 Javascript
jquery 子窗口操作父窗口的代码
2009/09/21 Javascript
JavaScript学习笔记记录我的旅程
2012/05/23 Javascript
Js,alert出现乱码问题的解决方法
2013/06/19 Javascript
JS.getTextContent(element,preformatted)使用介绍
2013/09/21 Javascript
jquery自定义滚动条插件示例分享
2014/02/21 Javascript
JS下载文件|无刷新下载文件示例代码
2014/04/17 Javascript
jquery checkbox 勾选的bug问题解决方案与分析
2014/11/13 Javascript
jquery事件preventDefault()方法用法实例
2015/01/16 Javascript
jQuery+Ajax实现限制查询间隔的方法
2016/06/07 Javascript
JavaScript中object和Object的区别(详解)
2017/02/27 Javascript
微信小程序删除处理详解
2017/08/16 Javascript
jQuery封装animate.css的实例
2018/01/04 jQuery
JavaScript两种计时器的实例讲解
2019/01/31 Javascript
ionic3双击返回退出应用的方法
2019/09/17 Javascript
基于 Vue 的 Electron 项目搭建过程图文详解
2020/07/22 Javascript
jQuery+ThinkPHP实现图片上传
2020/07/23 jQuery
[03:57]DOTA2英雄梦之声_第03期_幻影刺客
2014/06/21 DOTA
python实现哈希表
2014/02/07 Python
浅析Python的Django框架中的Memcached
2015/07/23 Python
两个使用Python脚本操作文件的小示例分享
2015/08/27 Python
Python 'takes exactly 1 argument (2 given)' Python error
2016/12/13 Python
python实现数独游戏 java简单实现数独游戏
2018/03/30 Python
用HTML5实现网站在windows8中贴靠的方法
2013/04/21 HTML / CSS
JD Sports法国:英国篮球和运动时尚的领导者
2017/09/28 全球购物
探索欧洲最好的品牌:Bombinate
2019/06/14 全球购物
植村秀加拿大官网:Shu Uemura加拿大
2019/09/03 全球购物
制药工程专业职业生涯规划范文
2014/03/10 职场文书
计算机应用专业自荐信
2014/07/05 职场文书
Python面试不修改数组找出重复的数字
2022/05/20 Python