本文我们为大家介绍 Python3 使用PyMySQL连接数据库,并实现简单的增删改查。
目录
什么是 PyMySQL?
PyMySQL 是在 Python3.x 版本中用于连接 MySQL 服务器的一个库,Python2 中则使用 mysqldb。
PyMySQL 安装
在使用 PyMySQL 之前,我们需要确保 PyMySQL 已安装。
如果还未安装,我们可以使用以下命令安装最新版的 PyMySQL:
pip3 install PyMySQL
数据库操作
1.连接关闭数据库
设置在类实例化的时候连接数据库和获取操作游标,在类删除释放操作时关闭数据库连接。
# -*- coding:utf-8 -*-
"""
mysql 数据操作 增删改查
"""
import pymysql
class MysqlPool(object):
client = ''
cursor = ''
def __init__(self):
# 建立数据库连接 获取要操作的集合
self.client = pymysql.connect(host='localhost', port=3306, db='library', user='你的user', password='你的密码')
# 使用cursor()方法获取操作游标
self.cursor = self.client.cursor()
def __del__(self):
# 关闭数据库连接
self.client.close()
2.创建数据表
创建一个自然类表。
def create_table(self):
""" 创建主表 """
sql = """CREATE TABLE `natural` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`name` varchar(255) DEFAULT NULL COMMENT '名称',
`alias` varchar(255) DEFAULT NULL COMMENT '别称',
`level` varchar(100) DEFAULT NULL COMMENT '级别',
`category` varchar(100) DEFAULT NULL COMMENT '类型',
`desc` varchar(400) DEFAULT NULL COMMENT '描述',
`cover` varchar(120) DEFAULT NULL COMMENT '封面路径',
`path` varchar(400) DEFAULT NULL COMMENT '图片逗号连接',
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8mb4;"""
return self.cursor.execute(sql)
3.新增数据
通过操作游标执行execute方法执行新增sql。
def insert_one(self, data):
""" 实现插入功能 """
path = ','.join(data['paths'])
sql = "insert into `natural`(`name`, `alias`, `level`, `category`, `desc`, `cover`, `path`) values ('%s', '%s', '%s', '%s', '%s', '%s', '%s')" % (
data['name'], data['alias'],
data['level'], data['category'],
data['desc'], data['cover'], path)
return self.cursor.execute(sql)
4.查询单条数据
查询时,通过for循环进行拼接多条搜索条件。
def find_one(self, where):
""" 实现查询一条 """
sql = "select * from `natural` where "
for index, item in enumerate(where):
if index == 0:
sql += f"`{item}` = '{where[item]}'"
else:
sql += f" and `{item}` = '{where[item]}'"
5.查询多条数据(分页)
分页查询多条数据,还是通过mysql 的limit来实现。
def find_all(self, where, pageIndex, count):
""" 查询所有 """
offSet = (pageIndex - 1) * count
sql = "select * from `natural` where "
for index, item in enumerate(where):
if index == 0:
sql += f"`{item}` = '{where[item]}'"
else:
sql += f" and `{item}` = '{where[item]}'"
sql += f" limit {offSet},{count}"
self.cursor.execute(sql)
arr = []
for val in self.cursor.fetchall():
path = val[7].split(',')
arr.append(
{'id': val[0], 'name': val[1], 'alias': val[2], 'level': val[3], 'category': val[4], 'desc': val[5],
'cover': val[6], 'path': path})
return arr
6.编辑数据
def update_one(self, data):
""" 实现修改功能 """
sql = f"""update `natural` set `name` = '{data['name']}', `alias` = '{data['alias']}',
`level` = '{data['level']}', `category` = '{data['category']}', `desc` = '{data['desc']}',
`cover` = '{data['cover']}', `desc` = '{data['desc']}' where id = '{data['id']}'"""
return self.cursor.execute(sql)
7.删除数据
def delete_one(self, id):
""" 实现删除 """
sql = "delete from `natural` WHERE id = '%s'" % id
return self.cursor.execute(sql)
8.删除数据表
def drop_tables(self):
""" 删除主表和附表 """
sql = "drop table if exists `natural`"
self.cursor.execute(sql)
9.测试代码 去掉注释即可使用
obj = MysqlPool()
# 创建数据表
# obj.create_table()
# 新增数据
# res = [
# {
# 'id': 1,
# 'name': '勺嘴鹬',
# 'alias': '琵嘴鹬、匙嘴鹬',
# 'level': '濒危',
# 'category': '鸟类',
# 'desc': '勺嘴鹬因嘴巴像一把黑色的小勺子,被称为“自带饭勺的小鸟”。觅食时,它会用嘴在水中或烂泥中像扫帚一样左右来回扫,有时也在地面直接啄食。据了解,勺嘴鹬是国家一级保护动物,目前全球种群数量仅有600多只。因为它的数量极少,正在经历极度迅速的衰退。这是因为许多因素,包括繁殖,通过和越冬地的栖息地丧失等等。勺嘴鹬繁殖期主要栖息于北极海岸冻原沼泽、草地和湖泊、溪流、水塘等水域岸边。非繁殖期主要栖息于海岸与河口地区的浅滩与泥地上,或海岸附近的水体边上,不深入到内陆水域。',
# 'cover': 'szy1.jpg',
# 'paths': ['szy1.jpg', 'szy2.jpg', 'szy3.jpg', 'szy4.jpg', 'szy5.jpg', 'szy6.jpg', 'szy7.jpg']
# },
# {
# 'id': 2,
# 'name': '长江鲟',
# 'alias': '琵嘴鹬、匙嘴鹬',
# 'level': '野外灭绝',
# 'category': '鱼类',
# 'desc': '鲟科、鲟属鱼类,又称达氏鲟。体长梭形,胸鳍前部平扁。头呈楔头形。吻端尖细,稍向上翘。鼻孔大,位眼前方。吻的腹面具2对长触须,其长约等于须基距口前缘的1/2。鳃裂大。体背部和侧板以上为灰黑色或灰褐色,侧骨板至腹骨板之间为乳白色,腹部黄白色或乳白色。为纯淡水定居性鱼类,杂食性鱼类,分布于长江中上游。为中国国家一级重点保护动物,世界自然保护联盟濒危物种红色名录(IUCN)野外灭绝(EW)级物种。长江鲟属于淡水定居性鱼类,略有集群,是一种广温性鱼类,生活适应水温范围1-32℃。天然环境中长江鲟喜欢在较暗的底层缓流水体中活动,经常栖息在8-10米的江河浅水区,底质为沙质或碛滩,有较多的腐殖质和底栖生物。在岩礁、沙底、卵石区域游动、觅食。冬季在有缓流的河道中越冬,立春后在江水回温至12℃以上时开始溯水上游到长江的干支流摄食产卵。',
# 'cover': 'cjx1.jpg',
# 'paths': ['cjx1.jpg', 'cjx2.jpg', 'cjx3.jpg', 'cjx4.jpg', 'cjx5.jpg', 'cjx6.jpg', 'cjx7.jpg']
# },
# ]
# for item in res:
# obj.insert_one(item)
# 编辑数据
# for item in res:
# obj.update_one(item)
# 查找单条数据
# print(obj.find_one({'id': 1}))
# 查找多条数据
# print(obj.find_all({'category': '鱼类'}, 1, 10))
# 删除数据
# obj.delete_one(2)
# 删除数据表
# obj.drop_tables()
总结
使用python语言操作mysql 创建数据表和增删改查数据,原理是执行mysql的sql语句。