Python Mysql增删改查操作

本文我们为大家介绍 Python3 使用PyMySQL连接数据库,并实现简单的增删改查。

目录

什么是 PyMySQL?

PyMySQL 安装

数据库操作

1.连接关闭数据库

2.创建数据表

3.新增数据

4.查询单条数据

5.查询多条数据(分页)

6.编辑数据

7.删除数据

8.删除数据表

9.测试代码 去掉注释即可使用

总结


什么是 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语句。

你可能感兴趣的:(Mysql,Python,mysql,PyMySQL,python)