我正在使用flask-sqlachemy。我宣布一个db
对象附加到烧瓶app:
from flask import Flask
from flask.ext.sqlalchemy import SQLAlchemy
app = Flask(__name__)
..
db = SQLAlchemy(app)
现在我在db
中使用views
,并使用sqlalchemy管理db.session
的设置和拆卸。然后我在business
中调用一个方法,其中也访问db.session
。
SQLAlchemy是否将同一会话授予调用者和被调用者方法,即使它们位于不同的模块中?我担心views
和business
会在访问db.session
时看到不同的会话。
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)
在business.py中
from myapp import db
def check_dude( dude):
x = db.session.query(...)
答案 0 :(得分:0)
简答:你应该没事。
这里的代码是关键
db = SQLAlchemy(app)
您正在将db
绑定到Flask的特定app
实例。从技术上讲,您也可以这样做:
db = SQLAlchemy()
然后在其他地方
db.init_app(app)
因此,Flask-SQLAlchemy允许您立即或稍后绑定整个应用程序。
只要您将db
声明放在__init__.py
中,我就会说您可以安全地重复使用任何模块。