您好,我有点坚持使用 SQLAlchemy 为我的 Flask 应用程序创建数据库。事实上,我正在观看 Flask 应用程序的教程,一切正常,直到出现此错误: SQLAlchemy.create_all() 得到了意外的参数“app”
这是代码:
from flask import Flask
from flask_sqlalchemy import SQLAlchemy
from os import path
db = SQLAlchemy()
DB_NAME = 'database.db'
def create_app():
app = Flask(__name__)
app.config['SECRET_KEY'] = 'AmirMohammad Purzahed'
app.config['SQLALCHEMY_DATABASE_URI'] = f'sqlite:///{DB_NAME}'
db.init_app(app)
from .views import views
from .auth import auth
app.register_blueprint(views, url_prefix='/')
app.register_blueprint(auth, url_prefix='/')
from .models import User, Note
create_database(app)
return app
def create_database(app):
if not path.exists('website/' + DB_NAME):
db.create_all(app=app)
print('Created Database!')
那么,您显然需要从
app
中删除 create_all()
参数。但为了确保调用 create_all()
时应用程序上下文可用,您必须将 create_database()
用 with app.app_context()
括起来:
# ... Above stays the same ...
with app.app_context():
create_database()
return app
def create_database():
if not path.exists('website/' + DB_NAME):
db.create_all()
print('Created Database!')
同时从函数中删除
app
参数,这是不需要的。
请参阅 Flask-SQLAlchemy 应用程序上下文文档 (3.1.x) 了解更多信息。