利用Python实现sqlite3增删改查的封装

下面我详细讲解一下“利用Python实现sqlite3增删改查的封装”的完整攻略。

1. sqlite3简介

sqlite3是一款轻量级、嵌入式的关系型数据库。它无需单独的服务器进程,数据存储在本地文件中,因此非常适合于需要本地数据存储需求的应用程序。

2. Python的sqlite3模块

Python标准库中自带sqlite3模块,使用sqlite3模块可以非常方便地操作sqlite3数据库。sqlite3模块封装了大量常用的数据库操作,同时也支持执行SQL语句。

3. sqlite3增删改查的封装

对于一个sqlite3数据库的常规操作,需要执行SQL语句,其中有许多类型的语句,而我们对每一个操作都进行封装,可以较好的避免SQL注入攻击,同时降低了代码的复杂度。

以下是一个对于增删改查操作的封装:

import sqlite3

class Db:
    def __init__(self, dbname):
        self.conn = sqlite3.connect(dbname)

    def get_conn(self):
        return self.conn

    def close_conn(self):
        self.conn.close()

    def create_table(self, table_name, fields_list):
        sql_create_table = f"CREATE TABLE IF NOT EXISTS {table_name}("
        for field in fields_list:
            sql_create_table += f"{field['name']} {field['type']},"
        sql_create_table = sql_create_table.rstrip(',') + ")"
        self.conn.execute(sql_create_table)

    def insert(self, table_name, fields, values):
        sql_insert = f"INSERT INTO {table_name} ({','.join(fields)}) VALUES ({','.join(['?']*len(values))})"
        self.conn.execute(sql_insert, values)

    def delete(self, table_name, condition):
        sql_delete = f"DELETE FROM {table_name} WHERE {condition}"
        self.conn.execute(sql_delete)

    def update(self, table_name, set_expression, condition):
        sql_update = f"UPDATE {table_name} SET {set_expression} WHERE {condition}"
        self.conn.execute(sql_update)

    def select(self, table_name, fields, condition=None, limit=None):
        sql_select = f"SELECT {','.join(fields)} FROM {table_name}"
        if condition:
            sql_select += f" WHERE {condition}"
        if limit:
            sql_select += f" LIMIT {limit}"
        res = self.conn.execute(sql_select).fetchall()
        return res

上述代码中,我们定义了一个Db类,其中包含了数据库连接、建表、插入、删除、更新、查询等常用操作的封装。在使用时,只需实例化Db类,即可对数据库进行增删改查等操作。

4. 示例说明

示例一:创建数据库及表

db = Db('test.db')
fields_list = [
    {'name': 'id', 'type': 'INTEGER PRIMARY KEY'},
    {'name': 'name', 'type': 'VARCHAR(20)'},
    {'name': 'gender', 'type': 'VARCHAR(4)'},
    {'name': 'age', 'type': 'INTEGER'}
]
db.create_table('user', fields_list)
db.close_conn()

上述代码中,我们通过实例化Db类,并执行create_table方法,创建了一个名称为user的表,并指定了该表的字段及其类型。

示例二:添加数据

db = Db('test.db')
fields = ['name', 'gender', 'age']
values = ['Tom', '男', 20]
db.insert('user', fields, values)
db.close_conn()

通过实例化Db类,我们执行了一条添加数据的语句。在该方法中,我们指定了表名、字段及其对应的值。

至此,通过对上述示例代码的分析,我们可以看到,利用Python实现sqlite3增删改查的封装的过程,其实并不复杂。我们只需对常见的数据库操作进行封装即可,这样可以减少代码的复杂度,降低了代码出错的概率,在实际开发应用中,带来了更好的灵活性和可维护性。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:利用Python实现sqlite3增删改查的封装 - Python技术站

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

相关文章

  • python rpyc客户端调用服务端方法的注意说明

    Python rpyc客户端调用服务端方法的注意说明 rpyc是一个Python库,用于实现远程过程调用(RPC)。使用rpyc,可以在客户端和服务器之间进行通信,以便在不同的计算机上执行Python代码。本攻略将介绍如何在Python rpyc客户端中调用服务端方法,并提供一些注意事项。以下是整个攻略的步骤: 安装rpyc库。可以使用以下命令安装rpyc库…

    python 2023年5月14日
    00
  • python numpy存取文件的方式

    NumPy是Python中用于科学计算的一个重要的库,它提供了高效的多维数组array和与之相关的量。在NumPy中,我们使用load()函数和save()函数读取和保存二进制文件。 读取二进制文件 使用NumPy的load()函数可以读取二进制文件,包括使用load()函数等。下面是一些示例: import numpy as np # 读取二进制文件 da…

    python 2023年5月14日
    00
  • PyTorch中view()与 reshape()的区别详析

    PyTorch中view()与reshape()的区别详析 在PyTorch中,tensor可以使用两种方法来改变其形状:view()和reshape()。这两种方法的作用是相当类似的,但是它们在实现上有一些细微的区别。本文将详细讲解这两种操作的区别。 view() view()方法是PyTorch中的一种基础操作,用于调整tensor的形状。它返回一个新的…

    python 2023年5月14日
    00
  • python opencv设置摄像头分辨率以及各个参数的方法

    Python OpenCV设置摄像头分辨率以及各个参数的方法 在Python中,OpenCV是一个非常流行的计算机视觉库,它可以用来处理图像和视频。在使用OpenCV时,我们经常需要设置摄像头的分辨率以及其他参数。本攻略将详细讲解Python OpenCV设置摄像头分辨率以及各个参数的方法,包括如何获取摄像头的分辨率、如何设置摄像头的分辨率、如何设置摄像头的…

    python 2023年5月14日
    00
  • Python使用random模块生成随机数操作实例详解

    Python使用random模块生成随机数操作实例详解 在Python中,可以使用random模块生成随机数。random模块提供了多种生成随机数的函数和方法,可以用于生成整数、浮点数、随机字符串等。本文将详细讲解如何使用random模块生成随机数,并提供两个示例说明。 1. 生成随机整数 在random模块中,可以使用randint(a, b)函数生成指定…

    python 2023年5月14日
    00
  • 教你学会通过python的matplotlib库绘图

    教你学会通过Python的Matplotlib库绘图 Matplotlib是Python中一个非常流行的绘图库,可以用于绘制各种类型的图表,包括线图、散点图、柱状图、饼图等。本文将详细讲解如何使用Python的Matplotlib库绘图,并提供两个示例说明。 1. 安装Matplotlib库 在使用Matplotlib库之前,需要先安装该库。可以使用以下命令…

    python 2023年5月14日
    00
  • Python实现合并excel表格的方法分析

    Python实现合并Excel表格的方法分析 在实际工作中,我们经常需要将多个Excel表格合并成一个表格。本攻略将介绍Python实现合并Excel表格的方法,包括如何读取Excel表格、如何合并Excel表格、如何将合并后的表格保存为新的Excel文件等。 读取Excel表格 在Python中,我们可以使用pandas库来读取Excel表格。以下是一个示…

    python 2023年5月14日
    00
  • NumPy 与 Python 内置列表计算标准差区别详析

    NumPy 与 Python 内置列表计算标准差区别详析 标准差是统计学中常用的一种测量数据离散程度的方法。在 Python 中,我们可以使用 NumPy 和内置列表来计算标准差。本文将详细介绍 NumPy 和内置列表计算标准差的区别。 NumPy 计算标准差 NumPy 是 Python 中用于科学计算的一个重要库,其中包含了许多用于数组计算的函数。下面是…

    python 2023年5月14日
    00
合作推广
合作推广
分享本页
返回顶部