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

Flask导入db遇RuntimeError:需配置SQLALCHEMY_DATABASE_URI或BINDS

解决Flask-SQLAlchemy导入db时的RuntimeError错误

问题重现

在Python Shell中执行from app import db时触发以下错误:

RuntimeError: Either 'SQLALCHEMY_DATABASE_URI' or 'SQLALCHEMY_BINDS' must be set

项目包含4个文件:app.py、main.css、base.html、index.html。

错误原因

你的app.py存在两处配置错误:

  1. Flask-SQLAlchemy要求的数据库配置键为SQLALCHEMY_DATABASE_URI,但你写成了SQLALCHEMY_DATABASE_URL
  2. SQLite相对路径的连接字符串需要3个斜杠(sqlite:///test.db),你只写了2个,会导致数据库路径解析异常

修复方案

修改app.py中的配置部分,修正键名和连接字符串:

from flask import Flask,render_template, url_for
from flask_sqlalchemy import SQLAlchemy
from datetime import datetime

app = Flask(__name__)
# 修正配置键名与SQLite连接字符串格式
app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:///test.db'
# 添加此配置禁用修改跟踪,避免不必要的警告
app.config['SQLALCHEMY_TRACK_MODIFICATIONS'] = False
db = SQLAlchemy(app)

class Todo(db.Model):
    id = db.Column(db.Integer, primary_key = True)
    content = db.Column(db.String(200), nullable = False)
    date_created = db.Column(db.DateTime, default = datetime.utcnow)

    def __repr__(self):
        return '<Task %r>' % self.id

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

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

后续操作

修复完成后,重新打开Python Shell执行以下命令创建数据库表:

from app import db
db.create_all()

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.15 19:50:35