如果在Flask-SQLAlchemy

时间:2017-09-11 20:44:34

标签: mysql flask connection

我想找到一种方法,如果主数据库超时,我可以动态连接到辅助数据库。我已经进行了广泛的研究,发现了一些仅使用SQLAlchemy但不使用Flask-SQLAlchemy的解决方案。推荐的解决方案如下所示。

engine1 = create_engine(...)
engine2 = create_engine(...)
Session1 = sessionmaker(bind=engine1)
Session2 = sessionmaker(bind=engine2)
session1 = scoped_session(Session1, scopefunc=...)
session2 = scoped_session(Session2, scopefunc=...)

我想构建一个类似于下面的故障保护程序.. synthax是伪造的代码。

if not request_has_connection:
   db = SQLAlchemy(app) # instantiate db with different config that has different db URI.

问题在于,Flask-SQLAlchemy不允许用户单独实例化引擎,每个模型使用的db都是从一行 db=SQLAlchemy(app)

实例化的

如果主数据库有超时或失去连接,我如何动态地将数据库的URI更改为辅助数据?

由于

1 个答案:

答案 0 :(得分:0)

也许看一下应用工厂(here)?如果使用惰性方法将应用程序实例绑定到数据库,则可以加载其他配置对象/文件。不确定你的项目结构现在是什么样的 - 但是像

那样
db = SQLAlchemy() 

然后你做完

app = Flask(__name__)
db.init_app(app)

在Lazy SQLAlchemy设置上查看此(here)烧瓶片段。