Python 和 SQLite:有效数据管理的黄金组合
01 SQLlite 优点
SQLite 是一个轻量级嵌入式关系数据库管理系统。与其他数据库系统相比,它具有以下特点。几个优点:
易于使用:SQLite 是一个独立的数据库,不需要单独的服务器进程或配置。它作为库直接嵌入到应用程序中,使其易于部署和管理。与其他数据库系统相比,它更简单易用,不需要复杂的安装和配置过程。
零配置:SQLite数据库没有独立的服务器进程,不需要额外的配置和管理。其所有数据都存储在单个文件中,这使得备份和迁移非常容易。只要应用程序可以访问该文件,就可以进行数据库操作。
轻量高效:SQLite的设计目标之一就是轻量高效的性能。其核心引擎非常小,大小只有几百KB,占用内存和磁盘空间更少。它非常适合处理小型数据库,特别适合嵌入式系统和移动设备。
单用户:由于 SQLite 是嵌入式数据库,因此它通常是为单用户使用而设计的。这意味着它不支持多个同时连接,可能不适合某些场景(例如大型企业级应用程序)。然而,对于大多数个人项目、小型应用程序或桌面应用程序来说,SQLite 的单用户模式就足够了。
事务支持:SQLite支持ACID事务,具有原子性、一致性、隔离性和持久性等属性。这意味着您可以使用事务来确保数据完整性和一致性,并允许回滚操作恢复之前的状态。
平台无关:SQLite是一个跨平台数据库,可以运行在多种操作系统上,包括Windows、Linux、macOS等。这使得开发人员可以轻松地跨平台部署和迁移应用程序,无需担心。关于数据库兼容性问题。
需要注意的是,虽然SQLite有很多优点,但它也有一些局限性。由于它被设计为轻量级和嵌入式,因此在处理大量数据和高并发访问时,它的性能可能不如专用服务器数据库系统。因此,选择数据库应该多方面根据具体需求和应用场景。
02 在 Python 中使用 SQLlite
1。导入SQLite模块:首先需要导入Python内置的sqlite3模块,该模块提供与SQLite数据库的交互功能。您可以使用以下语句导入模块:
import sqlite3
2。连接到数据库:使用 sqlite3 模块的 connect() 函数连接到 SQLite 数据库。如果没有数据库,则会创建一个新的数据库文件。如果数据库已经存在,它将打开现有的数据库文件。您可以使用以下代码连接数据库:
conn = sqlite3.connect('database.db') # 连接到名为'database.db'的数据库文件
3。创建Cursor对象:在SQLite中,使用Cursor对象来执行SQL语句并处理结果。您可以使用连接对象的cursor()方法创建游标对象,如下所示:
cursor = conn.cursor()
4。执行SQL语句:使用Cursor对象的execute()方法来执行SQL语句。您可以执行各种SQL操作,例如创建表、插入数据、更新数据、删除数据等。以下是一些示例:
4.1 创建表
cursor.execute('''CREATE TABLE IF NOT EXISTS employees (
id INTEGER PRIMARY KEY,
name TEXT,
age INTEGER)''')
4.2 插入数据
cursor.execute("SELECT * FROM employees")
rows = cursor.fetchall() # 获取所有查询结果
for row in rows:
print(row)
4.3 更新数据 4.3 查询数据 4。数据
cursor.execute("UPDATE employees SET age = ? WHERE id = ?", (35, 1))
4.5 删除数据
cursor.execute("DELETE FROM employees WHERE id = ?", (1,))
提交事务并关闭连接:对数据库进行更改后,必须使用连接对象的 commit() 方法提交事务并将更改保存到数据库。然后使用连接对象的close()方法关闭数据库连接。示例代码如下:
conn.commit() # 提交事务
conn.close() # 关闭数据库连接
这是一个简单的示例,展示了如何在Python中使用SQLite。您可以根据具体需要编写更复杂的代码并执行更多的SQL操作。请注意,异常处理对于确保正确处理事务并在发生错误时回滚也很重要。
03 SQLlite常用函数封装
import sqlite3
class SQLiteDatabase:
def __init__(self, db_file):
self.db_file = db_file
self.conn = None
self.cursor = None
def connect(self):
"""连接到SQLite数据库"""
self.conn = sqlite3.connect(self.db_file)
self.cursor = self.conn.cursor()
def disconnect(self):
"""断开与SQLite数据库的连接"""
if self.conn:
self.conn.close()
def execute(self, query, params=None):
"""执行SQL查询"""
if params:
self.cursor.execute(query, params)
else:
self.cursor.execute(query)
def fetch_all(self):
"""获取所有查询结果"""
return self.cursor.fetchall()
def fetch_one(self):
"""获取单个查询结果"""
return self.cursor.fetchone()
def commit(self):
"""提交更改到数据库"""
self.conn.commit()
def create_table(self, table_name, columns):
"""创建表"""
query = f"CREATE TABLE IF NOT EXISTS {table_name} ({columns})"
self.execute(query)
self.commit()
def insert(self, table_name, data):
"""插入数据"""
columns = ', '.join(data.keys())
placeholders = ', '.join(['?'] * len(data))
query = f"INSERT INTO {table_name} ({columns}) VALUES ({placeholders})"
values = tuple(data.values())
self.execute(query, values)
self.commit()
def update(self, table_name, data, condition):
"""更新数据"""
columns = ', '.join([f"{key} = ?" for key in data])
query = f"UPDATE {table_name} SET {columns} WHERE {condition}"
values = tuple(data.values())
self.execute(query, values)
self.commit()
def delete(self, table_name, condition):
"""删除数据"""
query = f"DELETE FROM {table_name} WHERE {condition}"
self.execute(query)
self.commit()
版权声明
本文仅代表作者观点,不代表Code前端网立场。
本文系作者Code前端网发表,如需转载,请注明页面地址。
发表评论:
◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。