• 数据库操作 pymysql 封装处理(中级)


    上一篇是基础,这就是简单的封装了一下,一般用到的只是查询,这里也只写了查询,其他的可以继续在添加

    代码如下:

    import pymysql
    from pymysql.cursors import DictCursor
    
    
    class DBHandler(object):
        """
        初始化数据库
        """
        # 也可以继承 Connection 这里没有选择继承
        def __init__(self,
                     host=None,  # 连接名
                     port=3306,  # 端口
                     user=None,  # 用户名
                     password=None,  # 密码
                     charset=None,  # 不能写utf-8 在MySQL里面写utf-8会报错
                     database=None,  # 数据库库名
                     cursorclass=DictCursor,
                     **kwargs):
            self.connect = pymysql.connect(
                host=host,  # 连接名
                port=port,  # 端口
                user=user,  # 用户名
                password=password,  # 密码
                charset=charset,  # 不能写utf-8 在MySQL里面写utf-8会报错
                database=database,  # 数据库库名
                cursorclass=cursorclass,  # 数据转换成字典格式
                **kwargs
            )
            # 创建游标对象  **主要**
            self.cursor = self.connect.cursor()
    
        def query_one(self, query, args=None):
            """
            查询数据库一条数据
            :param query: 执行MySQL语句
            :param args: 与查询语句一起传递的参数(给语句传参) 元组、列表和字典
            """
            self.cursor.execute(query, args)
            # 将更改提交到数据库
            self.connect.commit()
            return self.cursor.fetchone()
    
        def query_all(self, query, args=None):
            """
            查询数据库所有数据
            :param query: 执行MySQL语句
            :param args: 与查询语句一起传递的参数(给语句传参) 元组、列表和字典
            """
            self.cursor.execute(query, args)
            # 将更改提交到数据库
            self.connect.commit()
            return self.cursor.fetchall()
    
        def query(self, query, args=None, one=True):
            """
            主体查询数据
            :param query: 执行MySQL语句
            :param args: 与查询语句一起传递的参数(给语句传参) 元组、列表和字典
            :param one: one是True 时候执行query_one, 否则执行query_all
            """
            if one:
                return self.query_one(query, args)
            return self.query_all(query, args)
    
        def close(self):
            """
            关闭
            :return:
            """
            # 关闭游标
            self.cursor.close()
            # 断开数据库连接
            self.connect.close()
    
    
    if __name__ == '__main__':
        db = DBHandler(
            host='127.0.0.1',  # 连接名
            port=3306,  # 端口
            user='root',  # 用户名
            password='root',  # 密码
            charset='utf8',  # 不能写utf-8 在MySQL里面写utf-8会报错
            database='pymysql_test'  # 数据库库名
        )
        # 查询语句
        sql = 'select * from authors'
        sql1 = "select * from authors where authorId = %s;"
        print(db.query(sql, one=False))
        print(db.query(query=sql1, args=[1]))
      # 关闭连接
      db.close()
  • 相关阅读:
    链表中环的入口节点
    链表中倒数第k个节点
    调整数组顺序使奇数位于偶数前面
    53. Maximum Subarray
    42. Trapping Rain Water
    48. Rotate Image
    css技巧一
    html语义
    label标签表单响应
    CSS清除浮动
  • 原文地址:https://www.cnblogs.com/yongzhuang/p/12229003.html
Copyright © 2020-2023  润新知