使用flask sqlalchemy跨不同模块访问相同的db.session?

使用flask sqlalchemy跨不同模块访问相同的db.session?,flask,sqlalchemy,flask-sqlalchemy,Flask,Sqlalchemy,Flask Sqlalchemy,我正在用我的。我声明要附加到flask应用程序的db对象: 在uuu init_uuuuu.py中 from flask import Flask from flask.ext.sqlalchemy import SQLAlchemy app = Flask(__name__) .. db = SQLAlchemy(app) 现在我在视图中使用db,并使用sqlalchemy管理db.session的设置和拆卸。然后我在business中调用一个方法,该方法也访问db.session SQLA

我正在用我的。我声明要附加到flask应用程序的
db
对象:

在uuu init_uuuuu.py中

from flask import Flask
from flask.ext.sqlalchemy import SQLAlchemy
app = Flask(__name__)
..
db = SQLAlchemy(app)
现在我在
视图中使用
db
,并使用sqlalchemy管理
db.session的设置和拆卸。然后我在
business
中调用一个方法,该方法也访问
db.session

SQLAlchemy是否将相同会话授予调用方和被调用方方法,即使它们位于不同的模块中?我担心
视图
业务
在访问
db.session时会看到不同的会话


in views.py

from myapp import db
from business import check_dude

@app.route("/csrf_test", methods=['GET'])
def csrf_test_form():
    dude = db.session.query(...)
    flag = check_dude( dude)
商务英语

from myapp import db
def check_dude( dude):
    x = db.session.query(...)

简短回答:你应该没事

这里的代码是关键

db = SQLAlchemy(app)
您正在将
db
绑定到Flask的特定
app
实例。从技术上讲,您还可以:

db = SQLAlchemy()
后来在其他地方

db.init_app(app) 
因此,Flask SQLAlchemy允许您立即或稍后绑定整个应用程序

只要您将
db
声明放在
\uuu init\uuuu.py
中,我会说您可以安全地在任何模块中重复使用它