Flask-SQLAlchemy db.create_all() 得到了一个意外的关键字参数 'app'



我正在学习一个使用Flask SQLAlchemy创建Flask应用程序的教程。但是,它在创建数据库时已开始引发错误。如何创建数据库?

from flask import Flask
from flask_sqlalchemy import SQLAlchemy
db = SQLAlchemy()
def create_app():
app = Flask(__name__)
app.config["SQLALCHEMY_DATABASE_URI"] = "sqlite:///project.db"
db.init_app(app)
from . import models
create_database(app)
return app
def create_database(app):
if not path.exists("website/project.db"):
db.create_all(app=app)
print("created database")

线路db.create_all(app=app)给我这个错误:

SQLAlchemy.create_all() got an unexpected keyword argument 'app'
Flask SQLAlchemy 3不再接受create_all等方法的app参数。相反,它总是需要一个活动的Flask应用程序上下文。
db = SQLAlchemy()
def create_app():
app = Flask(__name__)
app.config["SQLALCHEMY_DATABASE_URI"] = "sqlite:///project.db"
db.init_app(app)
from . import models
with app.app_context():
db.create_all()
return app

不需要create_database函数。SQLAlchemy不会覆盖现有的文件,唯一不会创建数据库的时间是它引发错误。

相关内容

  • 没有找到相关文章

最新更新