Python数据库封装实现代码示例解析

Python数据库封装实现代码示例解析

在Python中操作数据库,我们可以使用第三方库或者原生的库实现,但是在实际开发过程中,我们经常会使用封装好的数据库操作库来简化操作。下面,我们将介绍如何封装数据库操作库,并给出实例说明。

数据库封装的好处

使用封装好的数据库操作库,可以简化开发者的操作,提高效率,减少重复的代码编写和出错的可能性。此外,通过合适的封装,操作代码的可读性和可维护性也会显著提高。

封装步骤

封装数据库操作库需要以下几个步骤:

  1. 建立连接
  2. 创建并执行sql语句
  3. 关闭连接

接下来,我们通过一个MySQL数据库操作库的实现,来演示这些步骤。

MySQL数据库封装示例

需要的库

在使用之前,需要安装 pymysql 库。

pip install pymysql

配置文件

首先需要定义 MySQL 配置信息,以便拥有访问MySQL数据库的权限。可以创建一个 config.py 文件进行配置信息的存储:

MYSQL_HOST = 'localhost'
MYSQL_PORT = 3306
MYSQL_USER = 'root'
MYSQL_PASSWORD = 'password'
MYSQL_DB = 'testdb'

连接池

在使用的时候,需要建立连接,但是连接数不能太多,因此需要使用连接池来进行管理。我们可以使用 pool 模块,将连接创建封装成 init_connection 函数。

import pymysql
from pymysql import connections, cursors
from DBUtils.PooledDB import PooledDB

from config import *


class MysqlPool(object):
    def __init__(self):
        self.pool = None
        self._connect_pool()

    def _connect_pool(self):
        self.pool = PooledDB(
            creator=pymysql,
            maxconnections=10,
            mincached=2,
            maxcached=5,
            maxshared=3,
            blocking=True,
            host=MYSQL_HOST,
            port=MYSQL_PORT,
            user=MYSQL_USER,
            password=MYSQL_PASSWORD,
            database=MYSQL_DB,
            cursorclass=cursors.DictCursor
        )

    def get_connection(self):
        return self.pool.connection()

pool = MysqlPool()

通过以上代码,我们建立了一个名为 MysqlPool 的MySQL连接池,其中的 _connect_pool 函数使用对应的配置信息连接到MySQL数据库,并使用 PooledDB 对它进行封装。get_connection 函数用于获取连接池的连接。

执行sql语句

在获得连接后,就可以编写具体的SQL语句了。以下是一个插入用户数据的示例,他将用户数据写入到表 user 中。

def insert_user(user_data):
    conn = pool.get_connection()
    sql = """
        insert into user (name, age, sex, province, city)
        values (%s, %s, %s, %s, %s)
    """

    data = (user_data['name'], user_data['age'], user_data['sex'],
            user_data['province'], user_data['city'])

    try:
        with conn.cursor() as cursor:
            cursor.execute(sql, data)
        conn.commit()
    except Exception as e:
        conn.rollback()
        raise e
    finally:
        conn.close()

以上代码,在函数内建立连接,将用户传入的信息用 SQL 语句进行插入,并进行异常处理(例如数据插入失败,数据回滚)。

关闭连接

在执行完 SQL 后需要对连接进行关闭,使用以下代码:

conn.close()

示例

示例1:插入一条用户数据

下面我们用上述封装好的 insert_user 函数来插入一条用户数据。

data = {
    'name': 'zhangsan',
    'age': 23,
    'sex': 'male',
    'province': 'Gansu',
    'city': 'Lanzhou'
}

insert_user(data)

如果插入成功,则表 user 中将增加一条数据。

示例2:查询

下面代码展示如何使用一个函数,查询用户身份证号码,加入正确则返回True:

def check_id_card(id_card):
    conn = pool.get_connection()
    sql = """
        SELECT count(*) as cnt FROM user WHERE id_card=%s
    """

    data = (id_card,)

    try:
        with conn.cursor() as cursor:
            cursor.execute(sql, data)
            result = cursor.fetchone()
        return result['cnt'] > 0
    except Exception as e:
        raise e
    finally:
        conn.close()

assert check_id_card('411423199809210078') == False

以上代码使用sql查询的方法,获取该身份证在用户表中的计数,并将计数结果的Bool值作为函数返回值,用以判定身份证号码是否唯一。

结束语

本文仅是MySQL数据库操作库的一个简单实现,但它展示了封装原子操作模块的思路,并能在快捷、贴近生产环境的示例中帮你学会如何把这些思路应用到实际中。当你获得自己的经验,并精简出属于自己的方法,你的代码自然就会变得更加高效和具有可维护性。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Python数据库封装实现代码示例解析 - Python技术站

(0)
上一篇 2023年5月19日
下一篇 2023年5月19日

相关文章

  • 如何在Python中插入数据到MySQL数据库?

    以下是如何在Python中插入数据到MySQL数据库的完整使用攻略,包括导入模块、连接数据库、执行插入操作等步骤。同时提供了两个示例以便更好理解如何在Python中插入数据到MySQL数据库。 步骤1:导入模块 在Python中,我们需要导入相应的模块连接数据库执行插入操作。以下是导入mysql-connector-python模块的基本语法: import…

    python 2023年5月12日
    00
  • python使用openpyxl库读写Excel表格的方法(增删改查操作)

    下面我将为你详细讲解“Python使用Openpyxl库读写Excel表格的方法(增删改查操作)”的完整实例教程。 1. 安装Openpyxl库 我们在使用Openpyxl库之前,需要先安装它。安装方法非常简单,只需要在终端中使用pip命令即可。在终端中输入以下命令: pip install openpyxl 如果没有权限,可以在命令前加上sudo执行。 s…

    python 2023年5月13日
    00
  • Python之基础函数案例详解

    Python之基础函数案例详解 什么是函数 在Python编程中,函数是一段代码,它可以接收用户给定的输入(又叫做参数),并对这些输入执行操作,最终得出一个输出。函数的主要作用是避免代码的重复、提高代码的可读性和可维护性。每个函数都有一个名称,就像变量的名称一样,它可以在程序的其他地方使用。 怎么定义一个函数 Python中,函数的定义格式如下: def f…

    python 2023年5月30日
    00
  • 深入理解Python变量的数据类型和存储

    深入理解 Python 变量的数据类型和存储 Python 是一门动态类型语言,即变量的类型是在运行时确定的。因此,深入理解 Python 变量的数据类型和存储及其在计算机底层的表示方式,有助于我们更好地使用 Python 进行编程。 Python 变量的数据类型 Python 内置了五种标准的数据类型,分别是: Numbers(数字):整数、浮点数、复数等…

    python 2023年5月14日
    00
  • Python字符串中查找子串小技巧

    下面就是Python字符串中查找子串的小技巧! 1. 使用in操作符查找子串 Python字符串中,可以使用in操作符进行子串查找,该操作符可以返回一个布尔值,表示子串是否存在于给定字符串中。示例如下: s = ‘hello world’ if ‘world’ in s: print(‘找到了!’) else: print(‘没找到。’) 输出: 找到了! …

    python 2023年6月5日
    00
  • Python实现爬取房源信息的示例详解

    Python实现爬取房源信息的示例详解 1. 准备工作 在开始实现爬取房源信息的示例之前,你需要进行以下准备工作: 安装Python环境 如果你尚未安装Python环境,可以前往Python官网下载你所需要的版本。 安装第三方包 我们使用requests、Beautiful Soup和pandas这三个第三方包来进行数据抓取和数据处理。你可以使用以下命令分别…

    python 2023年5月14日
    00
  • python基础知识小结之集合

    Python基础知识小结之集合 1. 集合是什么? 在Python中,集合是一种无序、唯一的数据结构,内部元素不允许重复,内部元素亦不支持索引操作。 1.1 创建集合 通过set()函数或者{}创建一个空集合: s1 = set() s2 = {} print(type(s1)) # <class ‘set’> print(type(s2)) #…

    python 2023年5月14日
    00
  • 如何在 3D 图形中为函数绘制曲线 – Python

    【问题标题】:How to plot a curve for a function in a 3D graphic – Python如何在 3D 图形中为函数绘制曲线 – Python 【发布时间】:2023-04-03 23:58:01 【问题描述】: 我有这个功能: z = 0.000855995633558468*x**2 + 0.0102702516…

    Python开发 2023年4月8日
    00
合作推广
合作推广
分享本页
返回顶部