下面我详细讲解一下“利用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技术站