当需要对大量的数据进行处理并写入/读取数据库时,直接使用Linux显然会显得力不从心,即使是图形化的Navicat Premium在处理大批量数据时也难以招架,只能通过SQL语句结合导入导出来实现一些事情,本文分享使用python语言中的pymysql包来控制MYSQL数据库。
相关名词简要释义:ORM(对象关系映射,将数据表映射成一个对象[方法、属性],这样可以在不考虑具体数据库种类的情况下直接修改其内容)
安装:
(国外)方法一:
pip install PyMySQL
(国内)方法二:
pip install PyMySQL -i https://pypi.douban.com/simple/
基本流程:
事务概念(Transaction):
事务是并发控制的基本单位。所谓的事务,它是一个操作序列,这些操作要么都执行,要么都不执行,它是一个不可分割的工作单位。
事务的特征(ACID):
- 原子性(Atomicity):事务中包含的操作被看做一个逻辑单元,这个逻辑单元中的操作要么全部成功要么全部失败
- 一致性(Consistency):事务的结果保留不变,即事务的运行并不改变数据的一致性
- 隔离性(Isolation):又称孤立性,事务的中间状态对其它事务是不可见的
- 持久性(Durability):指一个事务一旦提交成功,它对数据库中的数据的改变就应该是永久性的
实现步骤:
import pymysql
# 导入pymysql模块class Test_Mysql:def __init__(self):self.database_Name1 = "ABCDE"# 数据库名称self.conn = pymysql.connect(host="192.168.1.x",# 数据库服务器地址(IP)user="x",# 登录用户名password="x",# 登录密码database=self.database_Name1,# 数据库名称port=3306,# 端口号charset="utf8",# 字符集autocommit=False)# 自动提交事务def For_example_select(self):# 查询cursor = self.conn.cursor()# 建立游标对象cursor.execute('select version()')# 执行查询语句result = cursor.fetchone()# 使用游标获取下一条记录 默认第0条'''result2 = cursor.fetchall() 获取所有记录result3 = cursor.rowcount 获取查询语句结果的记录数cursor.rownumber = 0 设置游标位置,主要用于游标回零'''print('result=', result)# 测试输出MYSQL版本号来验证游标对象是否建立成功cursor.close()# 关闭游标self.conn.close()# 关闭连接def For_example_others(self):# 增删改try:self.cursor = self.conn.cursor()sql = '增/删/改的SQL语句'self.cursor.execute(sql)# 执行游标对象self.conn.commit()# 提交事务print(self.conn.affected_rows(), 'SQL语句执行对数据库产生的影响,即受影响行数')except Exception as err:# 异常捕获print('产生异常:', err)self.conn.rollback()# 执行数据回滚finally:self.cursor.close()self.conn.close()
使用以上方法就可以实现通过python控制mysql数据库了,可以进行批量的增删改查、异常捕获、事务回滚等操作,如有疑问欢迎评论区留言讨论。
❤关注我,不迷路❤
******我的本文相关专栏******
软件测试专栏(单击此处进入)
******我的其它作品专栏******
PC常见故障汇总专栏(点击进入)
EXCEL综合场景应用详解(点击此处进入)
全国计算机等级考试-二级python基础(点击此处进入)