Python与SQLite:打造高效数据管理的黄金组合

2023-06-1819:12:01后端程序开发Comments1,140 views字数 3349阅读模式

01 SQLlite的优势文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/47406.html

SQLite是一种轻量级的嵌入式关系型数据库管理系统,与其他数据库系统相比,它具有以下几个优势:文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/47406.html

简单易用:SQLite是一个自包含的数据库,不需要独立的服务器进程或配置。它以库的形式直接嵌入到应用程序中,易于部署和管理。与其他数据库系统相比,它更加简单易用,不需要复杂的安装和配置过程。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/47406.html

零配置:SQLite数据库没有独立的服务器进程,无需额外的配置或管理。它的所有数据存储在一个文件中,这使得备份和迁移变得非常简单。只要应用程序能够访问该文件,就可以进行数据库操作。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/47406.html

轻量高效:SQLite的设计目标之一是轻量级和高效性能。它的核心引擎非常小巧,只有几百KB大小,占用的内存和磁盘空间较少。它在处理小规模数据库时表现出色,对于嵌入式系统和移动设备来说特别适用。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/47406.html

单用户:由于SQLite是一个嵌入式数据库,它通常被设计为单用户使用。这意味着它不支持多个并发连接,对于某些特定场景(如大型企业级应用)可能不太适用。但对于大多数个人项目、小型应用程序或桌面应用来说,SQLite的单用户模式足够满足需求。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/47406.html

事务支持:SQLite支持ACID事务,具备原子性、一致性、隔离性和持久性特性。这意味着您可以使用事务来确保数据的完整性和一致性,并允许回滚操作以恢复到之前的状态。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/47406.html

平台无关性:SQLite是一个跨平台的数据库,可在多种操作系统上运行,包括Windows、Linux、macOS等。这使得开发人员能够轻松地在不同的平台上部署和迁移应用程序,而无需担心数据库兼容性问题。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/47406.html

需要注意的是,尽管SQLite具有许多优势,它也有一些限制。由于其设计目标是轻量级和嵌入式,它在处理大规模数据和高并发访问时的性能可能不如专门的服务器数据库系统。因此,在选择数据库时,应根据具体需求和应用场景综合考虑。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/47406.html

02 Python 中使用 SQLlite文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/47406.html

1. 导入SQLite模块:首先,需要导入Python内置的sqlite3模块,它提供了与SQLite数据库的交互功能。可以使用以下语句导入模块:文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/47406.html

import sqlite3

2. 连接到数据库:使用sqlite3模块的connect()函数来连接到SQLite数据库。如果数据库不存在,它将创建一个新的数据库文件。如果数据库已存在,它将打开现有的数据库文件。可以使用以下代码连接到数据库:文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/47406.html

conn = sqlite3.connect('database.db')  # 连接到名为'database.db'的数据库文件

3. 创建游标对象:在SQLite中,使用游标对象执行SQL语句并处理结果。可以使用连接对象的cursor()方法创建一个游标对象,如下所示:文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/47406.html

cursor = conn.cursor()

4. 执行SQL语句:使用游标对象的execute()方法执行SQL语句。您可以执行各种SQL操作,如创建表、插入数据、更新数据、删除数据等。以下是一些示例:文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/47406.html

4.1 创建表文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/47406.html

cursor.execute('''CREATE TABLE IF NOT EXISTS employees (                    id INTEGER PRIMARY KEY,                    name TEXT,                    age INTEGER)''')

4.2 插入数据文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/47406.html

cursor.execute("INSERT INTO employees (name, age) VALUES (?, ?)", ('John Doe', 30))

4.3 查询数据文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/47406.html

cursor.execute("SELECT * FROM employees")rows = cursor.fetchall()  # 获取所有查询结果for row in rows:    print(row)

4.4 更新数据文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/47406.html

cursor.execute("UPDATE employees SET age = ? WHERE id = ?", (35, 1))

4.5 删除数据文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/47406.html

cursor.execute("DELETE FROM employees WHERE id = ?", (1,))

提交事务和关闭连接:在对数据库进行修改后,需要使用连接对象的commit()方法提交事务,将修改保存到数据库中。然后,使用连接对象的close()方法关闭数据库连接。示例代码如下:文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/47406.html

conn.commit()  # 提交事务conn.close()  # 关闭数据库连接

这是一个简单的示例,展示了如何在Python中使用SQLite。您可以根据具体需求编写更复杂的代码,执行更多的SQL操作。请注意,异常处理也是很重要的,以确保在出现错误时能够适当地处理和回滚事务。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/47406.html

03 SQLlite 常用功能封装文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/47406.html

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()
文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/47406.html
  • 本站内容整理自互联网,仅提供信息存储空间服务,以方便学习之用。如对文章、图片、字体等版权有疑问,请在下方留言,管理员看到后,将第一时间进行处理。
  • 转载请务必保留本文链接:https://www.cainiaoxueyuan.com/bc/47406.html

Comment

匿名网友 填写信息

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

确定