登录
首页 >  Golang >  Go问答

如何在 Buffalo 中运行非 ORM SQL 查询?

来源:stackoverflow

时间:2024-03-16 11:33:34 119浏览 收藏

在 Buffalo 中执行原始 SQL 查询时,可以通过使用 Pop 定义 RawQueries 的方式来实现。该方法允许在 Buffalo 操作中获取数据库连接,并使用该连接执行 SQL 查询。这种方式不需要使用 sqlx 设置自己的数据库连接,而是利用 Buffalo 上下文附带的连接来进行查询。

问题内容

如何在 Buffalo 中执行原始 SQL 查询,而无需使用 sqlx 设置自己的数据库连接?

澄清一下:我在 database.yml 中定义了数据库连接,但此时我不想使用 Pop 模型。


解决方案


您还可以使用 pop 定义 rawqueries:https://godoc.org/github.com/gobuffalo/pop#Connection.RawQuery

在 buffalo 操作中,您可以执行以下操作:

func (v myResource) MyMethod(c buffalo.Context) error {
    // Get the DB connection from the context
    tx, ok := c.Value("tx").(*pop.Connection) // you get your connection here
    if !ok {
        return errors.WithStack(errors.New("no transaction found"))
    }
    q := tx.RawQuery("select * from foo where id = ?", 1) // you make your query here
    if err := q.All(model); err != nil {
        return errors.WithStack(err)
    }
}

这将是使用 pop 但不使用预定义模型的解决方案。在这种情况下,您只需使用 buffalo 上下文附带的连接即可。

好了,本文到此结束,带大家了解了《如何在 Buffalo 中运行非 ORM SQL 查询?》,希望本文对你有所帮助!关注golang学习网公众号,给大家分享更多Golang知识!

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