数据库操作 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()

原文地址:https://www.cnblogs.com/yongzhuang/p/12229003.html

时间: 2024-08-07 16:01:07

数据库操作 pymysql 封装处理(中级)的相关文章

C# .NET更智能的数据库操作的封装

前述: 对数据库操作的封装,相信网络上已经有一大堆,ORM框架,或者是.NET本身的EF,都很好的支持数据库操作.这篇文章是分享自己所思考的,对数据库操作的简单封装.我对于这篇文章,认为被浏览者所关注重点的是怎么分析设计数据库操作封装,代码是其次.而且,这是我第一篇文章,为了想好怎么实现花了些天,代码是博客发表时现写的.所以我想,使用可能还有bug,而且没有try catch异常的设计. 这个框架我理应做到对数据库无关,无论是哪个数据库都能够使用.不过,重点在于分析,而不是代码.所以,为了更好的

PHP中对数据库操作的封装

在动态网面设计中很多都要涉及到对数据库的操作,但是有时跟据需要而改用其它后台数据库,就需要大量修改程序.这是一件枯燥.费时而且容易出错的功作.其实我们可以用PHP中的类来实现对数据库操作的封装,从而使写出的程序在很小的改动下就可以完成后台数据库的更改. <? class dbInterface{ var $dbID=1; //用于确定当前操作的数据库,当dbID为1代表MySql,当为 2代表 SQL Server,为3时为ODBC或其它. var $dbHost; //数据库所在主机域名 va

C# .NET更智能的数据库操作的封装完整版(重构)

前述: 第一次发表文章,不过是对数据库简单的封装,主要是阐述下思路.那么在上篇文章,在大家的指导下和提出意见,并自己对代码进行了思考.在这两天我重构了新的框架,我觉得我写的可以称得上框架,为什么?请大家往下看.不过在项目中没有很多注释.笔者除了课余学习时候,大部分时间在完成学校的功课,没有许多时间,所以也就偷下懒,请大家体谅. 这次框架分为几个部分:拼接数据库语句.数据库执行.数据库连接控制.异常类.用户使用的DbHelper.等下我回用文字和图还分析这个部分.经过重构后,类增多了,而且能够极大

django的模型类管理器-----------数据库操作的封装

模型实例方法 str():在将对象转换成字符串时会被调用. save():将模型对象保存到数据表中,ORM框架会转换成对应的insert或update语句. delete():将模型对象从数据表中删除,ORM框架会转换成对应的delete语句. 模型类的属性 属性objects:管理器,是Manager类型的对象,用于与数据库进行交互. 当没有为模型类定义管理器时,Django会为模型类生成一个名为objects的管理器,自定义管理器后,Django不再生成默认管理器objects. 管理器是D

python数据库操作pymysql

安装数据库: pip3 install pymysql 进行数据库的更新.插入.查询等操作: 1 #!/usr/bin/python3.4 2 # -*- coding: utf-8 -*- 3 4 #-----------------原表格----------------- 5 6 #+-------+-----------+------------+------+ 7 #| mid | name | birth | sex | 8 #+-------+-----------+--------

C# .NET数据库操作

C# .NET更智能的数据库操作的封装完整版(重构) 前述: 第一次发表文章,不过是对数据库简单的封装,主要是阐述下思路.那么在上篇文章,在大家的指导下和提出意见,并自己对代码进行了思考.在这两天我重构了新的框架,我觉得我写的可以称得上框架,为什么?请大家往下看.不过在项目中没有很多注释.笔者除了课余学习时候,大部分时间在完成学校的功课,没有许多时间,所以也就偷下懒,请大家体谅. 这次框架分为几个部分:拼接数据库语句.数据库执行.数据库连接控制.异常类.用户使用的DbHelper.等下我回用文字

数据操作的封装--sqlhelper

为了提高软件的灵活性和可维护性,软件的代码需要科学的管理,我们引入了架构这个词.设计模式提醒我们,软件中重复性的代码需要封装起来.最近在做收费系统时,需要和数据库进行频繁的联系,既然是重复的使用,就需要封装,这里使用到了sql helper . 先来看看百度对sqohelper的解释:一个基于.NETFframework的数据库操作组件.虽然不知道组件的具体含义,还是可以猜出来它就是D层中对数据库操作进行封装的工具. 数据库的操作,不外乎四种模式,增.删.改.查,根据返回值来区分,可以分为有返回

自己封装的ASP.NET的MYSQL的数据库操作类

/** * 作者:牛腩 * 创建时间:2010年3月7日17时35分 * 类说明:对MYSQL数据库的操作类 */ using System; using System.Data; using MySql.Data.MySqlClient; namespace Niunan.BYLW.Utility { /// <summary>对MYSQL数据库的操作类 /// /// </summary> public class MYSQLHelper { private MySqlConn

面向对象基础----封装数据库操作类

思考:现在掌握了很多面向对象相关的内容,但是什么时候封装类?怎么封装?如果使用类成员? 引入:其实类的封装没有多么复杂,但是需要一个熟练的过程来确定哪些东西可以放到类里,该用什么样的形式等.我们通过封装一个数据库的操作来综合练习下 封装数据库类 掌握 定义:封装数据库操作类,即根据数据库的操作需求,来确认数据库操作类该有什么样的功能,以及这些功能该如何实现. 1.一个类通常就是一个文件,所以要先确定文件的名字:通常类文件命名规范有两种. 文件名字与类名一样,如Sql.php 为了区分普通php文