PyMySQL的简单封装

PyMySQL的简单封装

MySQL数据表的操作主要包括数据的增删改查,以下先封装了一个数据库的基类

封装基类代码

import pymysql


# 数据库基本操作封装
class DataBase:
    def __init__(self, password, db, host="localhost", port=3306, user="root"):
        self.conn = self.get_conn(host, port, user, password, db)  # 连接对象
        self.cursor = self.get_cursor()  # 游标对象

    def get_conn(self, host, port, user, password, db):
        """
        获取连接对象
        :param host:主机名一般为localhost
        :param port:一般为3306
        :param user:此处是用root用户进行操作
        :param password: 数据库连接密码
        :param db:
        :return:
        """
        conn = pymysql.connect(host=host, port=port, user=user, passwd=password, db=db)
        return conn

    def get_cursor(self):
        """
        获取游标对象,对数据库的操作是用游标进行访问的
        :return: 游标对象
        """
        cursor = self.conn.cursor()
        return cursor

    def select_all(self, sql):
        """
        查询全部
        :param sql:查询语句
        :return: [{}{}]
        """
        self.cursor.execute(sql)
        return self.cursor.fetchall()

    def select_one(self, sql):
        """
        查询一个
        :param sql: 查询语句
        :return: {}
        """
        self.cursor.execute(sql)
        return self.cursor.fetchone()  # 获取单条数据

    def commit_data(self, sql):
        """
        提交数据,用于增删改查
        :param sql:
        :return:
        """
        self.cursor.execute(sql)
        self.conn.commit()
        print("表连接对象,提交成功")

    def __del__(self):
    	"""
    	将游标和数据库的链接删除
    	"""
        self.cursor.close()
        self.conn.close()

注:测试时,直接将数据传入即可,如果没有报错,则说明成功

database = DataBase("123456", "parking_lot", "localhost", 3306, "root")

对数据库的一个上层封装

最近在完成一个项目的一个项目关于汽车停车场的数据存储,以下附上一个完成了部分的封装代码

from DataBase import *


class DataProcess(DataBase):
    def __init__(self, password, db, host="localhost", port=3306, user="root"):
        super().__init__(password, db, host, port, user)  # 将参数传给父类


    def create_usr_table(self):
        """
        创建用户表
        :return:
        """
        self.cursor.execute("DROP TABLE IF EXISTS usr_table") # 若数据表存在则删除数据表
        sql = """
        CREATE TABLE usr_table(
                    usr_id int(6) NOT NULL AUTO_INCREMENT,
                    usr_phone varchar(12) NOT NULL,
                    car_num varchar(9) NOT NULL,
                    primary key(usr_id)
                )ENGINE=MyISAM AUTO_INCREMENT=1 DEFAULT CHARSET=utf8
        """
        self.cursor.execute(sql)


    def create_inout_table(self):
        """
        创建进出表
        :return:
        """
        self.cursor.execute("DROP TABLE IF EXISTS in_out")
        sql = """
        CREATE TABLE in_out(
                    running_id int(6) NOT NULL AUTO_INCREMENT,
                    car_num varchar(9) NOT NULL,
                    in_time varchar(20) NOT NULL,
                    out_time varchar(20) NOT NULL,
                    primary key(running_id)
                )ENGINE=MyISAM AUTO_INCREMENT=1 DEFAULT CHARSET=utf8
        """
        self.cursor.execute(sql)

    """
    将数据插入用户表
    """

    def insert_usr_table(self, in_data):
        """
        将数据插入用户表
        :param in_data: 输入的数据,以元祖的形式插入
        :return:
        """
        # data = [("157xxxx3029", "赣AMxxxx")]  ##数据格式
        self.cursor.executemany("insert into usr_table(usr_phone, car_num) values (%s, %s)", in_data)
        self.conn.commit()


    def insert_inout_table(self, in_data):
        """
        将数据插入进出表
        :param in_data:
        :return:
        """
        # data = [("15717893029", "赣AM9384")]  ##数据格式
        self.cursor.executemany("insert into in_out(car_num, in_time, out_time) values (%s, %s, %s)", in_data)
        self.conn.commit()


if __name__ == "__main__":
    database = DataProcess("123456", "parking_lot")
    data = [("157xxxx4324", "赣AM9xx2")]
    database.insert_usr_table(data)
    # database.create_table()

    data = [("赣AM9xx2", "2021/8/30-22:50", "2021/8/31-22:50")]
    database.insert_inout_table(data)

    data = [("赣AM9xx2", "2021/8/30-22:50", "")]
    database.insert_inout_table(data)

注:创建表单中的AUTO_INCREMENT表示该数据自增,primary key(running_id)说明该表把running_id作为主键来使用
注:数据表若改成不存在则创建,存在则跳过“CREATE TABLE if not exists usr_table”

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值