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存在两处配置错误:
- Flask-SQLAlchemy要求的数据库配置键为
SQLALCHEMY_DATABASE_URI,但你写成了SQLALCHEMY_DATABASE_URL - 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
相关产品推荐
相关产品推荐

