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

Win11下Thonny4.0.2连接SQLite失败的原因及解决方法

问题原因分析

核心问题是Windows 11的系统权限限制:C盘根目录下的C:\Python属于系统保护目录,图书馆公共电脑的标准用户账号默认没有该目录的写入权限。SQLite在创建或打开数据库文件时,需要对目标路径具备读写权限,权限不足就会触发sqlite3.OperationError: unable to open database错误。

旧环境能正常运行,大概率是因为当时的系统(比如Win10)权限管控更宽松,或者C:\Python文件夹被手动赋予了写入权限。你测试的几种路径写法本身是正确的,问题不在路径格式。

解决方法

方法1:使用用户有权限的目录(推荐)

将数据库文件放到用户专属目录下(比如Thonny默认工作目录或用户文档文件夹),这些目录是系统允许普通用户读写的:

import sqlite3

# 直接用相对路径,数据库会创建在Thonny当前打开的工作文件夹下
connection = sqlite3.connect("sm_app.sqlite")
cursor = connection.cursor()

或者指定明确的用户目录路径,兼容性更强:

import sqlite3
import os

# 获取用户文档目录,自动适配不同用户名
docs_path = os.path.expanduser("~/Documents")
db_full_path = os.path.join(docs_path, "sm_app.sqlite")
connection = sqlite3.connect(db_full_path)
cursor = connection.cursor()

这种方式不需要修改系统权限,完全符合Windows安全规范,适合图书馆公共电脑环境。

方法2:给C:\Python文件夹添加写入权限(仅管理员可用)

如果图书馆管理员允许修改文件夹权限:

  1. 右键点击C:\Python文件夹 → 属性 → 安全选项卡
  2. 找到当前用户账户,点击「编辑」
  3. 勾选「写入」权限后保存设置
    之后使用任意一种正确的路径写法即可:
# 原始字符串写法
connection = sqlite3.connect(r"C:\Python\sm_app.sqlite")
# 正斜杠写法
connection = sqlite3.connect("C:/Python/sm_app.sqlite")
# 转义反斜杠写法
connection = sqlite3.connect("C:\\Python\\sm_app.sqlite")

注意事项

  • 避免直接在C盘根目录或系统保护目录下读写文件,这是Windows的安全设计,防止误操作破坏系统文件。
  • Thonny的默认工作目录可通过「文件」→「切换工作目录」查看或修改,用相对路径能让代码在不同电脑上通用,无需手动修改路径。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.18 18:42:19