【发布时间】:2021-01-24 09:18:02
【问题描述】:
我想在没有运行 Flask 应用程序的情况下使用 Flask-SQLAlchemy 将数据添加到数据库。
在应用程序和数据库初始化后,有没有办法从应用程序中获取db。
我的代码看起来像
db = SQLAlchemy()
def init_app():
app = Flask(__name__)
db = SQLAlchemy(app)
db.init_app(app)
return app
而我想做的就是
from app import init_app
app = init_app() # initialized but not running
# db is used in model.py, but not initialized
# with Flask
# from db = SQLAlchemy()
from model import Machine # class Machine(db.Model)
p = Machine(name='something')
# now I need the initialized db from somewhere
db.session.add(p)
db.session.commit()
基本上我想做here所描述的事情:
另一个缺点是 Flask-SQLAlchemy 使用数据库 在 Flask 上下文之外很难。这是因为,与 FLask-SQLAlchemy,数据库连接、模型、app都是 位于 app.py 文件中。在应用程序文件中有模型,我们 与应用程序外部的数据库交互的能力有限。 这使得在您的应用程序之外加载数据变得困难。此外, 这使得在 Flask 上下文之外检索数据变得困难。
【问题讨论】:
-
是的,可以。但我不想放弃 Flask-SQLAlchemy 带来的舒适感。使用该解决方案基本上是多余的,您可以完全跳过 Flask-SQLAlchemy。
标签: flask sqlalchemy flask-sqlalchemy