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

Pyrogram Client启动报sqlite3.OperationalError无法打开数据库文件

报错根因

抛出sqlite3.OperationalError: unable to open database file是因为Pyrogram在初始化阶段无法创建/读取用于存储登录会话的SQLite数据库文件,常见触发场景:

  • 初始化Client时传入的名称为occasion,Pyrogram默认会在脚本执行时的工作目录下生成occasion.session数据库文件,当前工作目录无写入权限(比如脚本放在C盘系统保护目录、Program Files文件夹下,普通用户身份无修改权限)
  • 之前运行脚本异常退出,残留的occasion.session文件被锁或损坏,无法被SQLite引擎正常打开
  • 代码未显式指定session文件存储路径,运行时工作目录被动态切换到了不存在/不可写的路径
  • 额外注意:当前代码未导入os模块、且api_id从环境变量读取后是字符串类型(Pyrogram要求api_id为整数),这两个问题会在数据库问题修复后触发其他报错,需要同步修正。
修复方案
  • 第一步:显式指定session文件的绝对存储路径,放到当前用户有完整读写权限的目录,同时补全缺失的导入、修正api_id类型,参考代码:
import os
from pyrogram import Client

# 将session文件存到当前用户的主目录,规避工作目录权限问题
session_file = os.path.expanduser("~/occasion.session")
client = Client(
    session_file,
    api_id=int(os.environ.get("TG_API_ID")),
    api_hash=os.environ.get("TG_API_HASH")
)

client.start()
client.send_message("me", "some_message_text")
client.stop()
  • 第二步:打开任务管理器,结束所有残留的Python进程,删除之前生成的损坏/被锁的occasion.session文件后重新运行脚本
  • 第三步:如果仍报错,右键点击脚本所在文件夹,打开「属性-安全」选项卡,确认当前Windows登录账号对该文件夹有读取、写入、修改权限,不要把脚本放在C盘根目录、Program Files等系统受保护路径下运行。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.31 00:15:32