zoukankan      html  css  js  c++  java
  • 数据库操作 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()
  • 相关阅读:
    解决Unsupported major.minor version 51.0问题的感悟
    python 自己实现for循环:
    去除(UTF8)格式文本中的Bom
    python range与xrange
    Permission denied: make_sock: could not bind to address处理
    This Android SDK requires Android Developer Toolkit version 20.0.0 or above
    centos下postgresql的安装与配置 20101217 12:39:15
    android软键盘 android:windowSoftInputMode
    android 代码实现安装卸载apk
    Android有效解决加载大图片时内存溢出的问题
  • 原文地址:https://www.cnblogs.com/yongzhuang/p/12229003.html
Copyright © 2011-2022 走看看