使用SQLAlchemy为Flask应用建库时遇create_all参数错误求助
解决SQLAlchemy.create_all() got an unexpected argument: 'app'错误
错误原因
Flask-SQLAlchemy 3.x及以上版本中,create_all()方法不再支持传入app参数。因为你已经通过db.init_app(app)将数据库实例与Flask应用完成绑定,必须在应用上下文环境中调用create_all()。
修复方案
修改create_database函数,使用应用上下文管理器包裹db.create_all()调用:
def create_database(app): if not path.exists('website/' + DB_NAME): with app.app_context(): db.create_all() print('Created Database!')
可选降级方案(不推荐)
如果需要保留原写法,可以降级到Flask-SQLAlchemy 2.x版本:
pip install flask-sqlalchemy==2.5.1
注意事项
确保你已经导入了所有需要生成数据表的模型类(比如代码中的User和Note),否则对应的表不会被创建。
内容的提问来源于stack exchange,提问作者AmirMohammad Pourzahed
相关产品推荐
相关产品推荐

