登录
首页 >  Golang >  Go问答

GoLang:同时使用两个不同的SQL连接进行数据库操作

来源:stackoverflow

时间:2024-03-19 11:27:29 487浏览 收藏

在 Go 中,使用两个不同的 SQL 连接进行数据库操作时,无法直接将来自不同数据库的表连接起来。这是因为 ORM(对象关系映射)工具通常将查询翻译为单个 SQL 查询,而该查询仅针对一个数据库。因此,无法在应用程序层实现跨不同数据库的连接。最佳解决方案是执行两个单独的查询,然后在应用程序层或其他层中将结果连接起来。

问题内容

我使用 go 语言。我有两个不同的数据库服务器:

  1. postgresql
  2. ms sql。

对于他们两个,我分别建立了一个连接:

db1, err := sql.open("postgres", psqlconn)
db2, err := sql.open("sqlserver", u.string())

连接工作正常。

现在我想连接第一个数据库和第二个数据库的数据:使用 join。 示例:

rows, err := db1.Query('select *
    from db1.dbname1.tabel
    left join db2.dbname2.tabel on db2.dbname2.tabel.id = db1.dbname1.tabel.id;')

但这不起作用:(我怎样才能将两个表连接在一起?我什么也没得到。或者还有其他方法可以做到这一点吗?

感谢您的支持!! 马蒂亚斯


正确答案


像 gorm 这样的 ORM 基本上是一个对象关系层,它提供了一些 API,可以将语言级实体转换为 SQL 查询,反之亦然。他们基本上将您的查询翻译为单个 SQL 查询,现在您的 postgresql 数据库收到一个查询,该查询是表 a (恰好存在)和另一个数据库中的另一个表 b 的联接!连接是在数据库级别完成的,而不是 ORM 级别。所以你无法实现这一点。

您能做的最好的事情就是执行两个单独的查询,然后将它们连接到您的应用程序层或其他层中。

以上就是本文的全部内容了,是否有顺利帮助你解决问题?若是能给你带来学习上的帮助,请大家多多支持golang学习网!更多关于Golang的相关知识,也可关注golang学习网公众号。

声明:本文转载于:stackoverflow 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>