你知道Python有内置数据库吗?Python内置库SQlite3使用指南

兄弟姐妹们,我想请讲解下,你知道Python有内置数据库吗?Python内置库SQlite3使用指南
最新回答
无人问我粥可暖

2026-10-23 19:09:26

Python确实有内置数据库支持,其标准库中的sqlite3模块提供了对SQLite数据库的完整封装。SQLite是一个轻量级的嵌入式关系型数据库,无需服务器配置,所有数据存储在单个文件中,非常适合小型应用、测试或数据分析场景。以下是sqlite3库的详细使用指南:

1. 导入库与连接数据库
  • 导入模块:直接通过import sqlite3引入,无需额外安装。import sqlite3 as sl
  • 创建/连接数据库:指定数据库文件名(如my-test.db),若文件不存在会自动创建。con = sl.connect('my-test.db')
2. 创建表

使用execute方法执行SQL语句创建表,支持定义字段类型、主键、自动递增等特性。

with con: con.execute(""" CREATE TABLE USER ( id INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT, name TEXT, age INTEGER ); """)
  • 关键特性:

    INTEGER、TEXT等数据类型。

    PRIMARY KEY AUTOINCREMENT实现自增主键。

3. 插入数据
  • 单条插入:使用占位符?防止SQL注入。sql = 'INSERT INTO USER (name, age) VALUES (?, ?)'con.execute(sql, ('Alice', 21))
  • 批量插入:通过executemany高效插入多行数据。data = [(1, 'Alice', 21), (2, 'Bob', 22)]con.executemany('INSERT INTO USER VALUES (?, ?, ?)', data)
4. 查询数据
  • 基础查询:使用execute获取结果集,遍历输出。with con: cursor = con.execute("SELECT * FROM USER WHERE age <= 22") for row in cursor: print(row) # 输出如 (1, 'Alice', 21)
  • 参数化查询:通过占位符动态传递条件。user_id = 1cursor = con.execute("SELECT * FROM USER WHERE id = ?", (user_id,))
5. 更新与删除数据
  • 更新记录:con.execute("UPDATE USER SET age = 23 WHERE name = 'Alice'")
  • 删除记录:con.execute("DELETE FROM USER WHERE id = 3")
  • 事务管理:使用with con上下文或手动commit()确保操作生效。
6. 使用SQL客户端工具(如DBeaver)
  1. 下载数据库文件:将生成的.db文件导出到本地。
  2. 配置连接:

    选择数据库类型为SQLite。

    指定文件路径,即可通过图形界面管理数据。

7. 与Pandas无缝集成
  • DataFrame写入数据库:import pandas as pddf = pd.DataFrame({'name': ['Alice', 'Bob'], 'age': [21, 22]})df.to_sql('USER_NEW', con, if_exists='replace', index=False)

    if_exists参数控制表存在时的行为(如替换或追加)。

  • 从数据库读取到DataFrame:df_query = pd.read_sql("SELECT * FROM USER", con)
  • 复杂查询示例:query = """ SELECT u.name, s.skill FROM USER u LEFT JOIN SKILL s ON u.id = s.user_id"""df_joined = pd.read_sql(query, con)
8. 注意事项
  • 无身份验证:SQLite设计轻量,默认不提供用户认证,需通过文件权限控制访问。
  • 并发限制:多进程/线程同时写入时需加锁(如sqlite3.connect(check_same_thread=False))。
  • 性能优化:对大量数据操作时,可启用事务(con.isolation_level = None后手动提交)。
总结

Python的sqlite3库提供了完整的SQLite操作接口,结合Pandas可轻松实现数据存储与分析的闭环。其零配置、单文件存储的特性使其成为快速原型开发、测试或小型应用的理想选择。建议通过实践掌握表操作、事务管理及Pandas集成等核心功能。