【问题标题】:Slick Mtable.getTables select database nameSlick Mtable.getTables 选择数据库名称
【发布时间】:2013-11-27 16:24:32
【问题描述】:

我的 Scala/Play DB URL 配置如下所示:

db.default.url="jdbc:mysql://localhost"

我不(不能)选择数据库,因为我使用了多个数据库。

我有一种方法可以从数据库表中以列名和值对的映射形式检索数据:

def getSession(id: String, db: String): Map[String, Any] = DB.withSession {

    val columns = MTable.getTables(None, None, None, None).list.filter(_.name.name == "myTable").head.getColumns.list.map(_.column) 
    val result = sql"""SELECT * FROM #$db.myTable WHERE id=$id""".as[List[Any]].firstOption.map(columns zip _ toMap).get

}

MTable.getTables 在这种情况下似乎不起作用,因为我认为它希望DB.withSession 选择一个数据库,但事实并非如此。我该如何完成这项工作?

【问题讨论】:

    标签: scala playframework playframework-2.0 slick play-slick


    【解决方案1】:

    如果你想使用多个数据库,你必须在 Play 中定义多个数据库,例如:

    db.database1.url="jdbc:mysql://localhost/database1"
    db.database2.url="jdbc:mysql://localhost/database2"
    db.database3.url="jdbc:mysql://localhost/database3"
    

    然后,您必须在每个不同的数据库上运行查询,并合并结果,例如:

    DB("database1").withSession { ... } ++ DB("database2").withSession { ... }
    

    等等……

    【讨论】:

      猜你喜欢
      • 2020-03-09
      • 2019-10-25
      • 2015-09-07
      • 2020-11-27
      • 1970-01-01
      • 2016-11-18
      • 2015-09-21
      • 1970-01-01
      • 2015-05-24
      相关资源
      最近更新 更多