You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python或Windows环境下如何为SQLite数据库文件设置密码保护

Python 层面实现加密

原生Python自带的sqlite3模块不支持加密功能,可通过以下两种方案实现加密保护:

  • 方案1:使用 SQLCipher 加密数据库(工业级常用方案)
    SQLCipher是开源的SQLite加密扩展,支持对整个数据库文件做AES-256加密,对应的Python绑定库为pysqlcipher3。
    安装命令:
    pip install pysqlcipher3
    使用示例代码:
    from pysqlcipher3 import dbapi2 as sqlite3
    # 连接数据库(如果是新建库会自动创建加密文件)
    conn = sqlite3.connect('../sqlitedb/sample_db.db')
    # 设置加密密码,建议使用复杂度足够的字符串
    conn.execute("PRAGMA key='你设置的加密密码'")
    # 验证密码正确后即可正常执行SQL操作
    conn.execute("CREATE TABLE IF NOT EXISTS test (id INT)")
    conn.commit()
    conn.close()
    
    注意:已有的未加密数据库无法直接开启加密,需要先导出原有数据再导入到新建的加密库中。
  • 方案2:文件级自定义加解密(适合小体量数据库)
    不想引入额外依赖的场景下,可以在关闭数据库连接后,用对称加密算法对整个db文件做加密,需要读写时先解密到临时内存/临时文件,操作完成后再加密回原文件,可通过cryptography库实现该逻辑。

Windows 系统层面安全措施

不需要修改代码的前提下,可通过系统原生功能实现访问限制:

  • 方案1:NTFS EFS 文件加密
    操作步骤:右键点击sample_db.db文件 → 选择「属性」→ 点击「高级」按钮 → 勾选「加密内容以便保护数据」→ 确认应用更改即可。
    特点:仅你当前登录的Windows账户可以访问该文件,其他账户即使拿到文件也无法读取内容。
  • 方案2:设置文件访问权限
    操作步骤:右键点击db文件 → 选择「属性」→ 切换到「安全」选项卡 → 点击「编辑」按钮 → 删除所有无关的组/用户(比如Everyone、Users等)→ 仅添加你自己的Windows账户,勾选「完全控制」权限 → 保存生效。
    特点:可精准控制可访问该文件的账户范围,无权限的用户无法打开、修改、删除该文件。
  • 方案3:BitLocker 分区加密
    如果数据库存放在非系统盘,可以右键点击对应磁盘分区 → 选择「启用BitLocker」→ 按照向导设置密码和恢复密钥完成加密。后续该分区内所有文件都会被加密,系统启动时需要输入BitLocker密码才能挂载访问分区。

注意事项

  • 所有加密方案的密钥/密码请妥善保管,丢失后将无法恢复数据库内的所有数据
  • 同时使用代码层面加密和系统层面加密可以提升安全等级,高并发场景下建议提前测试性能损耗是否符合业务要求

内容的提问来源于stack exchange,提问作者shee

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.06 08:30:02