flask_sqlalchemy多个数据源查询问题?

使用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的时候都必须绑定下源?

阅读 5.3k
1 个回答

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

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

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题