当前位置: 首页 > 后端技术 > Python

PythonFlaskSQLAlchemy上下文介绍

时间:2023-03-25 23:39:44 Python

PythonFlaskSQLAlchemy上下文介绍link如果你打算只使用一个应用程序(app),你可以跳过这篇文章。只需将您的应用程序传递给SQLAlchemy构造函数即可。但是如果你想使用多个应用程序,或者你想在要读取的函数中动态创建应用程序。如果您在函数中定义应用程序,但在SQLAlchemy全局对象中,后者如何知道前者?答案是init_app()函数:fromflaskimportFlaskfromflask_sqlalchemyimportSQLAlchemydb=SQLAlchemy()defcreate_app():app=Flask(__name__)db.init_app(app)returnapp它所做的是准备要使用的应用程序通过SQLAlchemy。但是,这现在不会将SQLAlchemy对象绑定到您的应用程序。为什么不?因为可能创建了多个应用程序。那么SQLAlchemy是如何理解你的应用程序的呢?您将必须设置一个应用程序上下文。如果您在Flask视图函数或CLI命令中执行此操作,则会自动发生。但是,如果您在交互式shell中工作,则必须自己完成(请参阅创建应用程序上下文)。如果您尝试在应用程序上下文之外执行数据库操作,您将看到以下错误:找不到应用程序。在视图函数内部工作或推送应用程序上下文。简而言之,执行以下操作:>>>fromyourappimportcreate_app>>>app=create_app()>>>app.app_context().push()或者,使用with语句进行设置和拆卸:defmy_function():withapp.app_context():user=db.User(...)db.session.add(user)db.session.commit()Flask-SQLAlchemy中的一些函数也可以选择性地接受应用程序的操作:>>>fromyourappimportdb,create_app>>>db.create_all(app=create_app())复制代码