gpt4 book ai didi

python - Flask 和 SqlAlchemy session

转载 作者:行者123 更新时间:2023-12-03 17:37:19 35 4
gpt4 key购买 nike

我一直在构建一个 flask 应用程序并使用 flask-sqlalchemy 和 flask-migrate。
最近我决定用普通的 sqlalchemy 和 alembic 替换扩展,我开始思考存储 db session 对象 (sqla) 的最佳位置是什么。

现在我有以下内容:

Base = declarative_base()


def init_db_session(app, expire_on_commit=True):
"""
Initialize the database
"""
engine = create_engine(app.config['SQLALCHEMY_DATABASE_URI'], convert_unicode=True)
db_session = scoped_session(
sessionmaker(autocommit=False, autoflush=False, expire_on_commit=expire_on_commit, bind=engine)
)

Base.query = db_session.query_property()

return db_session

def init_app(app):
"""
Flask app initialization and bootstrap
"""
init_logging(app)
app.celery = init_celery(app)
app.db_session = init_db_session(app)

但是在线给出了一些文档和示例,我想知道是否使用flask global 有更好的吗

它们都属于同一个上下文,我在文档和代码中读到了这一点,但仍然无法理解实际差异以及在 中使用它的潜在缺点。当前应用程序 相比

最佳答案

flask documentation建议在模块范围内声明 session 。这也是我在自己的代码中使用它的方式。

Base = declarative_base()
engine = create_engine(app.config['SQLALCHEMY_DATABASE_URI'], convert_unicode=True)
db_session = scoped_session(
sessionmaker(
autocommit=False,
autoflush=False,
expire_on_commit=expire_on_commit,
bind=engine
)
)

Base.query = db_session.query_property()


def init_db():
""" not much to do here if migrations are handled else where. """
pass


def init_app(app):
"""
Flask app initialization and bootstrap
"""
init_logging(app)
app.celery = init_celery(app)
app.db_session = init_db_session(app)

关于python - Flask 和 SqlAlchemy session ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45964704/

35 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com