sqlite3
时间: 2025-05-28 17:45:43 浏览: 18
### 关于 SQLite3 数据库的使用指南
SQLite3 是一种轻量级、嵌入式的数据库解决方案,适合多种应用场景。以下是关于其使用的详细指南。
#### 1. 安装与导入 SQLite3 模块
SQLite3 已经作为标准库的一部分包含在 Python 中,因此不需要额外安装即可直接使用。只需通过 `import sqlite3` 来引入该模块[^1]。
```python
import sqlite3
```
如果需要单独下载 SQLite 库(例如用于其他编程环境),可以从官方站点获取最新版本:https://www.sqlite.org/download.html[^2]。
---
#### 2. 创建连接与数据库
可以通过 `sqlite3.connect()` 方法建立到 SQLite 数据库的连接。如果没有指定路径中的数据库文件,则会自动创建一个新的数据库文件。
```python
connection = sqlite3.connect('example.db')
```
此命令会在当前目录下创建名为 `example.db` 的数据库文件[^1]。
---
#### 3. 执行 SQL 查询语句
执行任何 SQL 命令都需要先创建一个游标对象 (Cursor),并通过它发送指令给数据库引擎。
```python
cursor = connection.cursor()
```
接着可以调用 `execute()` 方法运行单条 SQL 语句或者批量插入数据时使用 `executemany()` 函数[^1]。
示例:创建一张新表:
```sql
CREATE TABLE IF NOT EXISTS users (
id INTEGER PRIMARY KEY AUTOINCREMENT,
name TEXT NOT NULL,
age INT);
```
---
#### 4. 插入数据
向已存在的表格里添加记录可通过以下方式完成:
```python
insert_query = "INSERT INTO users (name, age) VALUES (?, ?)"
data_to_insert = ('Alice', 30)
cursor.execute(insert_query, data_to_insert)
connection.commit() # 提交更改至磁盘保存
```
这里采用了参数化查询来防止 SQL 注入攻击[^1]。
---
#### 5. 查询数据
读取存储的数据通常涉及 SELECT 语句以及 fetchall/fetchone 等方法提取结果集。
```python
select_query = "SELECT * FROM users WHERE age > ?"
result_set = cursor.execute(select_query, (25,))
for row in result_set.fetchall():
print(row)
```
上述代码片段展示了如何筛选年龄大于某值的所有用户,并打印每一条匹配的结果[^1]。
---
#### 6. 更新与删除数据
修改现有记录或移除不再需要的信息也是常见的需求。
- **更新**: 修改特定条件下的字段值;
- **删除**: 移除符合条件的一行或多行数据。
例子如下所示:
```python
update_stmt = 'UPDATE users SET age=? WHERE name=?'
delete_stmt = 'DELETE FROM users WHERE id=?'
# Update operation example
cursor.execute(update_stmt, (35, 'Alice'))
# Delete operation example
cursor.execute(delete_stmt, (1,))
connection.commit()
```
注意每次变更后都需记得提交事务以确保改动生效[^1]。
---
#### 7. 错误处理机制
为了增强程序健壮性,在实际项目开发过程中应该考虑加入异常捕获逻辑。
```python
try:
with connection:
cursor.executescript("""
DROP TABLE IF EXISTS employees;
CREATE TABLE employees(id integer primary key autoincrement, firstname text not null, lastname text not null);
INSERT INTO employees(firstname,lastname) VALUES('John','Doe');
""")
except Exception as e:
print(f'An error occurred: {e}')
finally:
connection.close()
```
利用上下文管理器简化资源释放流程的同时也提高了可维护性和安全性[^1]。
---
### 性能优化建议
由于 SQLite 设计初衷偏向简单高效而非高并发场景支持,所以在大规模写入操作前最好调整一些默认设置比如启用 WAL(Write-Ahead Logging)[^2]:
```python
def enable_wal_mode(conn):
conn.execute("PRAGMA journal_mode=WAL;")
enable_wal_mode(connection)
```
此外还可以适当增大缓存大小从而减少物理 I/O 开销提升整体性能表现[^2].
---
阅读全文
相关推荐















