鍍金池/ 問答/Python  數(shù)據(jù)庫/ flask_sqlalchemy多個數(shù)據(jù)源查詢問題?

flask_sqlalchemy多個數(shù)據(jù)源查詢問題?

使用flask_sqlalchemy 配置多個數(shù)據(jù)庫 如下配置了2個數(shù)據(jù)庫

SQLALCHEMY_DATABASE_URI ='.........'
SQLALCHEMY_BINDS = {
        'local': '.........'
    }

然后配置2個db

db = SQLAlchemy(app)
dblocal = SQLAlchemy(app)
dblocal.session.bind = dblocal.get_engine(bind='local')

但是使用的時候

num1 = db.session.query(models.TLog).count()
num2 = dblocal.session.query(models.TLog).count()

這樣第一次使用的時候 能查出正確的數(shù)據(jù)
第二次查詢的時候 dblocal.session.bind就變成默認的數(shù)據(jù)庫源了
只有在每次調(diào)用之前 dblocal.session.bind = dblocal.get_engine(bind='local')這樣
才能查出正確的數(shù)據(jù)
說明:因為2套數(shù)據(jù)庫都一樣的 所有用的同1個model類 所以不能在model里面綁定__bind_key__
請問有其他的解決方式么??
還是說只能每次調(diào)用dblocal的時候都必須綁定下源?

回答
編輯回答
故人嘆

第一次和第二次是在不同的請求中嗎?dblocal.session.bind = dblocal.get_engine(bind='local')是只在應(yīng)用初始化的時候執(zhí)行的嗎?

如果以上都成立的話,我的假設(shè)是:
請求完成之后,session被close掉了;然后來新的請求的時候session重新bind到了默認的SQLALCHEMY_DATABASE_URI數(shù)據(jù)庫上。

2017年4月26日 02:48