如何使用Yesod / Persistent访问两个不同的数据库服务器?

时间:2017-07-21 21:06:21

标签: haskell yesod persistent

我使用Yesod和Persistent构建网站(我使用的是基本的yesod mysql脚手架)。 我需要访问主要的数据库,但runDB使用的数据库 默认连接参数和连接。是否有一种简单的方法可以将Persistent与两个不同的连接参数一起使用?

2 个答案:

答案 0 :(得分:1)

创建连接的函数(如approx(...))位于runSqlite monad中。这意味着您可以使用IO在Yesod应用程序的Handler函数中调用它。您也可以立即在数据库上运行查询,这样非常简洁。

答案 1 :(得分:0)

查看脚手架代码,应该很容易定义另一个rundDB访问使用不同连接参数创建的另一个池。这意味着还要修改Settings以读取和设置额外的连接信息。 但是,主要问题之一是,需要记住要使用的连接(或runDB),具体取决于要加载的数据类型。另一种解决方案是使用联合表。 MySql(或MariaDB)允许创建连接到远程数据库的代理表。即使它需要一些设置,这也是在客户端安全且易于使用的优势。