本文适合纯新手!无需任何数据库基础,跟着步骤操作即可掌握 SQLite3 的核心用法。
目标:让你像用记事本一样轻松操作数据库!
SQLite3 是一个轻量级的 嵌入式数据库,无需安装独立服务,所有数据存储在一个文件中。
确保已安装 Python(建议 3.6+)。打开终端输入以下命令:
python --version
若显示版本号(如 Python 3.8.5
)则正常。若报错,需先 安装 Python。
无需额外安装!Python 自带 sqlite3
库,直接在代码中导入:
import sqlite3
# 连接到当前目录下的 test.db 文件(不存在则自动创建)
conn = sqlite3.connect('test.db')
'test.db'
:当前目录下的 test.db
文件。'/home/user/data.db'
:绝对路径指定位置。conn = sqlite3.connect(':memory:') # 程序关闭后数据消失
cursor = conn.cursor() # 所有 SQL 操作通过游标执行
# 创建 users 表(如果不存在)
cursor.execute('''
CREATE TABLE IF NOT EXISTS users (
id INTEGER PRIMARY KEY AUTOINCREMENT, # 自增主键
name TEXT NOT NULL, # 文本类型,不能为空
age INTEGER, # 整数类型
email TEXT UNIQUE # 唯一约束(邮箱不可重复)
)
''')
conn.commit() # 提交事务(创建表需要提交)
类型 | 说明 |
---|---|
INTEGER |
整数(如 1, -5, 100) |
TEXT |
字符串(如 “Hello”) |
REAL |
浮点数(如 3.14) |
BLOB |
二进制数据(如图片) |
# 查询数据库中所有表名
cursor.execute("SELECT name FROM sqlite_master WHERE type='table'")
print(cursor.fetchall()) # 输出:[('users',)]
# 使用 ? 占位符避免 SQL 注入
cursor.execute('''
INSERT INTO users (name, age, email)
VALUES (?, ?, ?)
''', ('Alice', 30, '[email protected]'))
conn.commit() # 提交!
users = [
('Bob', 25, '[email protected]'),
('Charlie', 35, '[email protected]')
]
cursor.executemany('''
INSERT INTO users (name, age, email) VALUES (?, ?, ?)
''', users)
conn.commit()
cursor.execute('SELECT * FROM users')
rows = cursor.fetchall() # 获取全部结果
for row in rows:
print(row) # 输出:(1, 'Alice', 30, '[email protected]')
# 查找年龄大于 28 的用户
cursor.execute('SELECT * FROM users WHERE age > ?', (28,))
results = cursor.fetchall()
for row in results:
print(f"ID: {row[0]}, 姓名: {row[1]}, 年龄: {row[2]}")
cursor.execute('SELECT * FROM users WHERE id = ?', (1,))
user = cursor.fetchone() # 只获取第一条
print(user) # 输出:(1, 'Alice', 30, '[email protected]')
# 将 Alice 的邮箱更新为 [email protected]
cursor.execute('''
UPDATE users
SET email = ?
WHERE name = ?
''', ('[email protected]', 'Alice'))
conn.commit()
# 删除 ID 为 2 的用户
cursor.execute('DELETE FROM users WHERE id = ?', (2,))
conn.commit()
try:
cursor.execute("INSERT INTO users (name) VALUES ('David')")
cursor.execute("INSERT INTO users (name) VALUES ('Eve')")
conn.commit() # 成功则提交
except sqlite3.Error as e:
print("出错啦:", e)
conn.rollback() # 失败则回滚(撤销所有操作)
使用 with
上下文管理器:
with sqlite3.connect('test.db') as conn:
cursor = conn.cursor()
cursor.execute("INSERT INTO users (name) VALUES ('Frank')")
# 无需 commit,退出 with 块时自动提交
默认返回元组,可通过 row_factory
改为字典:
def dict_factory(cursor, row):
return {col[0]: row[idx] for idx, col in enumerate(cursor.description)}
conn.row_factory = dict_factory
cursor = conn.cursor()
cursor.execute('SELECT * FROM users WHERE id = 1')
print(cursor.fetchone()) # 输出:{'id': 1, 'name': 'Alice', ...}
推荐工具:DB Browser for SQLite
import os
print(os.getcwd()) # 查看文件实际保存路径
sqlite3.connect('/User/name/data.db')
conn.commit()
。直接复制 .db
文件即可!SQLite 数据库是单一文件。
通过本教程,你已经学会了:
下一步建议:
遇到问题? 随时查阅本文代码示例,或使用 SQLite 浏览器调试!