Как выполнять необработанные запросы с использованием sqlx? - PullRequest
0 голосов
/ 13 апреля 2020

Используя sqlx в качестве адаптера базы данных, я хотел бы запускать запросы к профилям пользователей на основе предоставленных пользователем данных POST. Есть несколько параметров, таких как age, sex и location и многие другие.

Так, например, если пользователь отправляет только значение age, запрос должен выглядеть следующим образом:

var profiles []model.Profile
q:= "SELECT *  FROM profile WHERE age = ?"
err = database.SQL.Select(&profiles, q, age)
if err != nil {
    log.Println(err)
} 

Как видите, поскольку запрос не может быть построен динамически, этот метод недостаточно гибок и становится настолько многословным, чтобы учесть все возможные варианты.

Мне нужно построить запрос на основе входных данных, а затем просто передать необработанный запрос в sqlx.

Примерно такой псевдокод:

q:= `SELECT *  FROM profile WHERE 
      age > 25   AND sex="f" AND location="London"`
    err = database.SQL.ExecRaw(&profiles, q)

Как можно Я добился этого в sqlx?
Я посмотрел документы, но не смог понять, как это сделать.

1 Ответ

1 голос
/ 13 апреля 2020

Если вы не хотите использовать параметры, не используйте параметры. Select не мешает вам вводить литералы в запрос.

...