flask_sqlalchemy多个数据源查询问题?

eboy
  • 17

使用flask_sqlalchemy 配置多个数据库 如下配置了2个数据库

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()

这样第一次使用的时候 能查出正确的数据
第二次查询的时候 dblocal.session.bind就变成默认的数据库源了
只有在每次调用之前 dblocal.session.bind = dblocal.get_engine(bind='local')这样
才能查出正确的数据
说明:因为2套数据库都一样的 所有用的同1个model类 所以不能在model里面绑定__bind_key__
请问有其他的解决方式么??
还是说只能每次调用dblocal的时候都必须绑定下源?

回复
阅读 3.6k
1 个回答

第一次和第二次是在不同的请求中吗?dblocal.session.bind = dblocal.get_engine(bind='local')是只在应用初始化的时候执行的吗?

如果以上都成立的话,我的假设是:
请求完成之后,session被close掉了;然后来新的请求的时候session重新bind到了默认的SQLALCHEMY_DATABASE_URI数据库上。

宣传栏