当需要对大量的数据进行处理并写入/读取数据库时,直接使用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数据库了,可以进行批量的增删改查、异常捕获、事务回滚等操作,如有疑问欢迎评论区留言讨论。
❤关注我,不迷路❤
******我的本文相关专栏******
******我的其它作品专栏******