使用sqlite3创建一张表,并读取表中的数据
时间: 2025-06-03 12:35:24 浏览: 13
<think>嗯,用户让我介绍如何使用SQLite3创建表并读取数据。首先,我需要确定用户对SQLite的了解程度。可能他们是刚开始接触数据库,或者已经有其他数据库的经验,比如MySQL或PostgreSQL。我需要从基础开始,确保步骤清晰易懂。
首先,我应该解释如何连接到数据库。SQLite3是Python内置的库,所以不需要额外安装,这点很重要,要提到。然后,创建表需要使用CREATE TABLE语句,这里可能需要说明基本的字段类型,比如INTEGER、TEXT等。要给出一个具体的例子,比如用户表,包含id、name、age等字段,这样用户更容易理解。
接下来是插入数据,这部分可能用户也会需要,虽然问题主要是创建和读取,但插入示例数据能帮助演示读取过程。可能需要展示使用问号作为占位符的参数化查询,防止SQL注入,这也是一个安全的好习惯。
然后是读取数据,使用SELECT语句,用execute()执行,然后用fetchall()或fetchone()获取结果。需要循环遍历结果并打印出来,让用户看到实际效果。
最后,确保提到关闭数据库连接的重要性,以及使用with语句来自动处理连接和提交事务的方法,这样代码更简洁和安全。
可能需要考虑用户在实际操作中可能遇到的问题,比如表已存在时的错误处理,可以加上IF NOT EXISTS。或者,是否需要在代码中包含异常处理?但为了简单起见,可能先不涉及,保持示例简洁。
另外,用户可能需要知道如何查看输出结果,所以在读取数据的部分,用print显示每一行数据,这样他们运行代码后能看到实际的数据内容。
总结一下,步骤应该是:导入库、连接数据库、创建游标、执行建表语句、插入数据、提交、查询数据并输出,最后关闭连接。同时,提供一个完整的代码示例,让用户可以复制运行测试。</think>以下是使用 Python 的 `sqlite3` 库创建表、插入数据并读取数据的完整示例:
```python
import sqlite3
# 连接到数据库(如果不存在会自动创建)
conn = sqlite3.connect('example.db')
cursor = conn.cursor()
# 创建表(如果不存在)
cursor.execute('''CREATE TABLE IF NOT EXISTS users
(id INTEGER PRIMARY KEY,
name TEXT NOT NULL,
age INTEGER)''')
# 插入示例数据
cursor.execute("INSERT INTO users (name, age) VALUES (?, ?)", ('Alice', 30))
cursor.execute("INSERT INTO users (name, age) VALUES (?, ?)", ('Bob', 25))
conn.commit() # 提交事务
# 读取数据
cursor.execute("SELECT * FROM users")
rows = cursor.fetchall()
# 打印查询结果
print("ID\tName\tAge")
print("-----")
for row in rows:
print(f"{row[0]}\t{row[1]}\t{row[2]}")
# 关闭连接
conn.close()
```
### 代码说明:
1. **连接数据库**:`sqlite3.connect()` 创建或连接数据库
2. **创建表**:
- `CREATE TABLE IF NOT EXISTS` 防止重复创建
- 包含三个字段:自增主键id、姓名(name)、年龄(age)
3. **插入数据**:
- 使用参数化查询(`?`占位符)防止SQL注入
- 需要显式调用 `commit()` 提交事务
4. **读取数据**:
- `fetchall()` 获取所有结果,返回包含元组的列表
- 遍历结果集输出数据
5. **关闭连接**:最后务必关闭数据库连接
### 输出结果:
```
ID Name Age
--
1 Alice 30
2 Bob 25
```
### 高级用法建议:
1. 使用 `with` 语句自动管理连接:
```python
with sqlite3.connect('example.db') as conn:
cursor = conn.cursor()
# 执行操作...
# 无需手动关闭,with 会自动处理
```
2. 添加错误处理:
```python
try:
cursor.execute(sql_query)
except sqlite3.Error as e:
print(f"Database error: {e}")
```
3. 使用 `fetchmany(size)` 分批读取大数据量结果
这个示例演示了 SQLite3 的基本 CRUD 操作,你可以根据实际需求修改表结构和查询语句。
阅读全文
相关推荐


















