利用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日

相关文章

  • 浅谈numpy溢出错误

    以下是关于“浅谈NumPy溢出错误”的完整攻略。 背景 在NumPy中,当进行数值计算时,可能会出现溢出错误。出错误是指计算结果超出了计算机可以表示的范围。在本攻略中,我们将讨论NumPy中的溢出,并介绍如何处理这些错误。 NumPy溢出错误 在NumPy中,当进行数值计算时,可能会出现以下两种类型的溢出错误: 运算结果出了数据类型的范围。 运算结果超出了计…

    python 2023年5月14日
    00
  • python+numpy实现的基本矩阵操作示例

    以下是关于“Python+Numpy实现的基本矩阵操作示例”的完整攻略。 Numpy简介 Numpy是Python中用于科学计算的一个重要库,它提供了高效的多维数组对象和各种用于操作数组的函数。Numpy的核心是ndarray对象,它是一个n维数组,支持快速的向量化操作和广播功能。 Numpy基本矩阵操作 创建矩阵 在Numpy中,可以使用numpy.arr…

    python 2023年5月14日
    00
  • pandas读取Excel批量转换时间戳的实践

    pandas读取Excel批量转换时间戳的实践 在本攻略中,我们将介绍如何使用pandas库读取Excel文件,并将其中的时间戳批量转换为日期格式。我们将提供两个示例,演示如何使用pandas库读取Excel文件和批量转换时间戳。 问题描述 在数据处理中,时间戳是一个非常常见的数据类型。在Excel文件中,时间戳通常以数字形式存储。在本攻略中,我们将介绍如何…

    python 2023年5月14日
    00
  • 如何用Python绘制3D柱形图

    如何用Python绘制3D柱形图 在本攻略中,我们将介绍如何使用Python和Matplotlib库绘制3D柱形图。我们将提供两示例,以帮助更好地理解如何绘制3D柱形图。 步骤一:导入要的库和模块 我们需要入Matplotlib库一些其他必要的库和模块。下面是导入这些库和模块的代码: import matplotlib.pyplot as pltimport…

    python 2023年5月14日
    00
  • 基于MTCNN/TensorFlow实现人脸检测

    基于MTCNN/TensorFlow实现人脸检测 介绍 在计算机视觉领域中,人脸检测是一个重要的工具,它在很多应用中都有广泛的应用,例如人脸识别、人脸跟踪、动态表情识别等等。本文将介绍如何使用MTCNN/TensorFlow来实现人脸检测。 MTCNN介绍 MTCNN是一种用于人脸检测的深度学习算法,它是由Google实验室在2016年提出的。MTCNN可以…

    python 2023年5月13日
    00
  • Python自动安装第三方库的小技巧(pip使用详解)

    当我们进行Python开发时,经常会用到一些第三方库,如何快速便捷地安装这些库呢?这里介绍一种小技巧,使用Python自带的包管理器pip。 1. 确认pip是否安装 首先,需要确认pip是否已经安装在本地电脑上。打开终端(Windows下为命令提示符或PowerShell,MacOS和Linux下为终端),输入以下命令: pip 如果显示 pip 的使用方…

    python 2023年5月13日
    00
  • selenium学习教程之定位以及切换frame(iframe)

    下面是本文的完整攻略。 定位元素 定位元素是selenium自动化测试中的关键步骤,正确的定位能够帮助我们准确地找到所需要的元素。在selenium中,有多种方式可以定位元素,主要分为以下几种: 通过ID进行定位 driver.find_element_by_id("element_id") 通过Name进行定位 driver.find_…

    python 2023年5月13日
    00
  • 请不要重复犯我在学习Python和Linux系统上的错误

    在学习Python和Linux系统时,可能会犯一些常见的错误,这些错误可能会导致程序无法正常运行或系统无法正常工作。以下是请不要重复犯我在学习Python和Linux系统上的错误的完整攻略,包括常见错误的介绍和解决方法的示例说明: 常见错误介绍 Python错误 语法错误:在编写Python代码时,可能会出现语法错误,例如拼写错误、缩进错误等。 运行时错误:…

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