Python 库手册:sqlite3 轻量级数据库接口模块

发布于:2025-07-18 ⋅ 阅读:(20) ⋅ 点赞:(0)

sqlite3 是 Python 内置的轻量级数据库接口模块,用于操作 SQLite 数据库。SQLite 是一个嵌入式的、无服务器的关系型数据库,不需要单独安装数据库服务器或客户端。

使用 sqlite3,可以像使用文件一样方便地在 Python 中读写数据库内容,广泛应用于轻型应用、桌面软件、本地缓存、配置存储、原型开发等场景。

常见应用场景:

(1)本地数据缓存或配置存储。

(2)小型业务系统或原型数据库。

(3)单机版应用的数据存储。

(4)数据分析任务中临时结果的持久化。

(5)与 Pandas、CSVJSON 数据互导。

  ◆  ◆

核心概念

1、SQLite 是一个文件型数据库,数据保存在单个 .db 或 .sqlite 文件中。

2、sqlite3.connect() 创建数据库连接,文件不存在时会自动创建。

3、使用 cursor.execute() 执行 SQL 语句,支持参数化查询。

4、所有操作默认在事务中执行,需 commit() 或 rollback()。

5、使用 with 上下文管理可以自动关闭连接。

6、支持标准 SQL 操作(SELECT、INSERT、UPDATE、DELETE 等)。

  ◆  ◆

应用举例

例 1:创建数据库与表

import sqlite3
conn = sqlite3.connect("example.db")  # 创建数据库文件cursor = conn.cursor()
cursor.execute('''CREATE TABLE IF NOT EXISTS users (    id INTEGER PRIMARY KEY,    name TEXT,    age INTEGER)''')
conn.commit()conn.close()

例 2:插入数据

import sqlite3
with sqlite3.connect("example.db") as conn:    cursor = conn.cursor()    cursor.execute("INSERT INTO users (name, age) VALUES (?, ?)", ("Alice", 25))    cursor.execute("INSERT INTO users (name, age) VALUES (?, ?)", ("Bob", 30))    cursor.execute("INSERT INTO users (name, age) VALUES (?, ?)", ("mediaTEA", 7))    conn.commit()

例 3:查询数据

import sqlite3
with sqlite3.connect("example.db") as conn:    cursor = conn.cursor()    cursor.execute("SELECT * FROM users")    rows = cursor.fetchall()    for row in rows:        print(row)

例 4:更新与删除

import sqlite3
with sqlite3.connect("example.db") as conn:    cursor = conn.cursor()    cursor.execute("UPDATE users SET age = ? WHERE name = ?", (28, "Alice"))    cursor.execute("DELETE FROM users WHERE name = ?", ("Bob",))    conn.commit()

例 5:使用参数化防止 SQL 注入

import sqlite3
name_input = "Alice"with sqlite3.connect("example.db") as conn:    cursor = conn.cursor()    cursor.execute("SELECT * FROM users WHERE name = ?", (name_input,))    print(cursor.fetchall())

  ◆  ◆

常用函数与类速览

sqlite3.connect(database, timeout=5.0, isolation_level=None)

连接(或创建)一个 SQLite 数据库。

参数:

database:数据库文件路径,若为 :memory: 则使用内存数据库

timeout:数据库锁定等待时间,默认 5 秒

isolation_level:事务隔离级别。默认为自动事务处理

返回:Connection 对象

Connection.cursor()

创建一个游标对象,用于执行 SQL 语句。

参数:无

返回:Cursor 对象

Cursor.execute(sql, parameters=())

执行一条 SQL 语句。

参数:

sql:SQL 查询语句,支持 ? 占位符

parameters:可选参数元组

返回:Cursor 对象自身,可链式调用

Cursor.executemany(sql, seq_of_parameters)

重复执行同一条 SQL 语句,用于批量插入。

Cursor.fetchall()

获取查询结果中的所有行。

参数:无

返回:列表,每行是元组

Cursor.fetchone()

获取查询结果的下一行。

参数:无

返回:单个元组或 None

Connection.commit()

提交事务。所有写操作必须手动提交,除非设置了自动提交。

Connection.rollback()

回滚当前事务。

Connection.close()

关闭数据库连接。

sqlite3.Row

特殊行工厂类,使查询结果支持字段名访问(字典风格)。

sqlite3.Error

所有 SQLite 异常的基类(如 OperationalError, IntegrityError 等)。

  ◆  ◆

补充说明

1、建议使用 with sqlite3.connect(...) as conn: 管理连接资源。

2、查询时请使用参数化写法,避免 SQL 注入风险。

3、SQLite 数据库无需服务器支持,适合个人项目、嵌入式系统、教学等。

4、若需要更高级的数据建模功能,可考虑 SQLAlchemy 等 ORM 库。

图片

“点赞有美意,赞赏是鼓励”


网站公告

今日签到

点亮在社区的每一天
去签到