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

如何在Python中通过SQLite3以只读模式打开数据库?

实现SQLite3只读连接的两种可行方案

方案1:使用SQLite内置常量设置只读标志

Python的sqlite3模块里没有RO这个属性,你需要用官方定义的SQLITE_OPEN_READONLY常量来设置只读模式,示例代码如下:

import sqlite3

with sqlite3.connect('bazanata.db', flags=sqlite3.SQLITE_OPEN_READONLY) as conn:
    cursor = conn.cursor()
    cursor.execute("SELECT name FROM users")
    # 尝试执行写操作(如INSERT/UPDATE)会直接报错,达到只读限制效果

方案2:通过URI连接字符串指定只读模式

如果你习惯用URI模式连接数据库,可以在连接字符串中添加mode=ro参数,记得开启uri=True:

import sqlite3

with sqlite3.connect('file:bazanata.db?mode=ro', uri=True) as conn:
    cursor = conn.cursor()
    cursor.execute("SELECT name FROM users")
    # 同样,写操作会被拦截报错

注意事项

  • 两种方式都能实现只读限制,一旦连接处于只读模式,所有写操作(INSERT/UPDATE/DELETE等)都会抛出OperationalError异常,刚好满足你限制部分函数为只读的需求。
  • 确保你的Python版本支持这些参数(Python 3.4+对URI模式的支持已经很完善,SQLITE_OPEN_READONLY常量则是长期存在的)。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.04 07:38:16