【数据库】pymysql数据库事务操作
封装代码骨架:
- 创建连接
- 创建游标
- 执行sql
try:# 获取游标对象# 调用游标对象# 如果是 查询:#返回所有数据# 否则:# 提交事务# 返回受影响的行数
except:# 回滚事务# 抛出异常
finally:# 关闭游标# 关闭连接
- 关闭游标
- 关闭连接
封装代码骨架如下:
# 导包
import pymysql# 创建工具类
class DBUtil():# 创建连接@classmethoddef __get_conn(cls):pass# 获取游标@classmethoddef __get_cursor(cls):pass# 执行sql@classmethoddef exe_sql(cls, sql):try:passexcept Exception as e:passfinally:pass# 关闭游标@classmethoddef __close_cursor(cls):pass# 关闭连接@classmethoddef __close_conn(cls):pass
创建连接方法完整代码:
# 导包
import pymysql# 创建工具类
class DBUtil():# 初始化__conn = None__cursor = None# 创建连接@classmethoddef __get_conn(cls):if cls.__conn is None:cls.__conn = pymysql.connect(host="localhost",port=3307,user="root",password="root",database="books")return cls.__conn# 获取游标@classmethoddef __get_cursor(cls):if cls.__cursor is None:cls.__cursor = cls.__get_conn().cursor()return cls.__cursor# 执行sql@classmethoddef exe_sql(cls, sql):try:# 获取游标对象cursor = cls.__get_cursor()# 调用游标对象的execute方法,执行sqlcursor.execute(sql)# 如果是查询if sql.split()[0].lower() == "select":# 返回所有数据return cursor.fetchall()# 否则:else:# 提交事务cls.__conn.commit()# 返回受影响的行数return cursor.rowcountexcept Exception as e:# 事务回滚cls.__conn.rollback()# 打印异常信息print(e)finally:# 关闭游标cls.__close_cursor()# 关闭连接cls.__close_conn()# 关闭游标@classmethoddef __close_cursor(cls):if cls.__cursor:cls.__cursor.close()cls.__cursor = None# 关闭连接@classmethoddef __close_conn(cls):if cls.__conn:cls.__conn.close()cls.__conn = None
【数据库】pymysql数据库事务操作相关推荐
- qt中mysql怎么支持事务_Qt踩坑之mysql数据库不支持事务操作?
文章已更新,最新地址:https://www.fearlazy.com/index.php/post/145.html 现象: 在调试数据库操作时发现还没commit数据已经插入表中,执行rollba ...
- Entity Framework 4 数据事务操作
利用数据库链接进行事务操作 var db = ConnectionHelper.GetConn(ConnectionType.Write);//获取上下文 var conn = db.Connecti ...
- DB-概念-数据库:数据库/Database
ylbtech-DB-概念-数据库:数据库/Database 数据库是以一定方式储存在一起.能与多个用户共享.具有尽可能小的冗余度.与应用程序彼此独立的数据集合,可视为电子化的文件柜--存储电子文件的 ...
- python---django中orm的使用(5)数据库的基本操作(性能相关:select_related,和prefetch_related重点)(以及事务操作)...
################################################################## # PUBLIC METHODS THAT ALTER ATTRI ...
- 2.关于QT中数据库操作,简单数据库连接操作,数据库的增删改查,QSqlTableModel和QTableView,事务操作,关于QItemDelegate 代理
Linux下的qt安装,命令时:sudoapt-get install qt-sdk 安装mysql数据库,安装方法参考博客:http://blog.csdn.net/tototuzuoquan ...
- 【Java数据库】使用JDBC操作MySQL数据库、Batch批处理 、事务的概念
MySQL 数据库的命令行操作 登陆操作mysql -hlocalhost –uroot –p123456 退出操作exit 数据库操作建库:create database 库名; 卸载库:drop ...
- python多线程读取数据库数据_python多线程操作MySQL数据库pymysql
python多线程操作MySQL数据库pymysql 项目中使用多线程操作数据库提示错误:pymysql.err.InterfaceError: (0, "),原因是pymysql的exec ...
- 使用JDBC进行数据库的事务操作(2)
本篇将讲诉如何使用JDBC进行数据库有关事务的操作.在上一篇博客中已经介绍了事务的概念,和在MySQL命令行窗口进行开启事务,提交事务以及回滚事务的操作. 似乎事务和批处理都可以一次同时执行多条SQL ...
- 第二百七十九节,MySQL数据库-pymysql模块操作数据库
MySQL数据库-pymysql模块操作数据库 pymysql模块是python操作数据库的一个模块 connect()创建数据库链接,参数是连接数据库需要的连接参数 使用方式: 模块名称.conne ...
- 数据库新增幂等操作_使用数据库唯一键实现事务幂等性
幂等性 概念 在分布式系统中,幂等性是一致性方面的一个重要概念. 幂等(idempotent.idempotence)是一个数学与计算机学概念,常见于抽象代数中. 在编程中一个幂等操作的特点是其任意多 ...
最新文章
- html修改headicon,index.html
- 150名打工人被AI判定效率低遭开除,“属实是人工智能,能治工人“
- Linux Kernel TCP/IP Stack — L3 Layer — netfilter 框架 — conntrack(CT,连接跟踪)
- Adobe Bridge 2021中文版
- 【转】用Fiddler做抓包分析详解
- 一个必用的javascript框架:underscore.js - wine的思考 - ITeye技术网站
- 基础版的音频功放电路(A类功放电路、B类功放电路、C类功放电路、D类功放电路、G类功放电路、H类功放电路、K类功放电路、T类功放电路)
- 求助各位大神JSP报错急急急!!!!感激不尽
- OSPF区域划分和区域间路由(三类LSA)
- 使用HTML5 select标签来实现更改网页背景颜色
- 杭州辣府餐饮JAVA_超全“滨江美食必打卡list”,不收藏会后悔!年前再去搓几顿啊~...
- java获取当前日,当前月的开始时间和结束时间,当前季度的开始时间和结束时间
- 微信朋友圈视频变长从6秒增加为10秒
- Visual Assist 使用小结
- 运维之眼——流量采集网络
- supervisor 介绍,启动uwsgi失败,端口被占用
- 光敏电阻简单应用——晚上灯亮,白天灯灭
- Python是什么?一篇短文带你了解Python
- 网站自动链接SEO优化技巧
- 计算机音乐游山恋,小红书十大歌曲 游山恋垫底,第一你绝对听过
热门文章
- No, Machine Learning is not just glorified Statistics
- 20应用统计考研复试要点(part3)--统计学
- 利用python爬虫(案例5)--X刺代理的小IP们
- 我的世界服务器破坏方块有延迟,问一下我的世界游戏方块不会被破坏的指令以及指令适用于游戏的版本
我记得在服务器上和单机上好像有不同的指令...
- 什么是 SAP Core Data Service Annotation Propagation
- 零基础 ABAP 学习教程系列文章的目录
- SAP Commerce Cloud启动时遇到的9001端口被占用的问题
- Graph QL和SAP Graph的区别
- Angular property binding重复触发的问题讨论
- SAP UI5 OData, annotation这些设计的意义