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

PyCharm中使用SQLite无法访问数据库路径,SQLAlchemy URL解析报错

解决SQLAlchemy无法解析SQLite URI的问题

你的核心问题是SQLite数据库URI格式错误,导致SQLAlchemy无法解析路径,进而抛出ArgumentError。以下是具体修复步骤:

1. 修正数据库URI格式

SQLite的URI必须遵循sqlite:///(三个斜杠)的格式,你当前的写法sqlite:/ ../database/tarefas.db存在两个问题:斜杠数量不足、路径中包含多余空格。

根据你的目录结构(假设database文件夹与主文件同级),修改为:

app.config['SQLALCHEMY_DATABASE_URI'] = "sqlite:///database/tarefas.db"

如果database文件夹在主文件的上级目录,才需要用../,例如:sqlite:///../database/tarefas.db,注意不要加空格。

2. 调整数据库初始化代码位置

你将db.create_all()放在了Tarefa类的内部,这会导致类定义阶段就执行数据库操作,容易引发上下文冲突。建议将这段代码移到类定义之后、应用启动之前。

修复后的完整代码

from flask import Flask, render_template, request
from flask_sqlalchemy import SQLAlchemy

app = Flask(__name__)
# 修正URI格式
app.config['SQLALCHEMY_DATABASE_URI'] = "sqlite:///database/tarefas.db"
# 关闭修改跟踪以避免警告
app.config['SQLALCHEMY_TRACK_MODIFICATIONS'] = False

db = SQLAlchemy(app)

class Tarefa(db.Model):
    __tablename__ = "tarefas"
    id = db.Column(db.Integer, primary_key=True)
    conteúdo = db.Column(db.String(200))
    feita = db.Column(db.Boolean)

# 初始化数据库表
with app.app_context():
    db.create_all()
    # create_all()无需提交事务,可注释掉commit
    # db.session.commit()

@app.route("/")
def home():
    return render_template("index.html")

if __name__ == "__main__":
    app.run(debug=True)

额外注意事项

  • 确保项目目录下存在database文件夹,若没有请手动创建,否则会提示路径不存在。
  • 保留db = SQLAlchemy(app)的参数完全可行,只要URI格式正确、上下文处理得当,就能正常运行。

内容的提问来源于stack exchange,提问作者Henrique Rocha PlayerNoobr

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.08 14:10:21