【问题标题】:Raw SQL insert with Korma使用 Korma 插入原始 SQL
【发布时间】:2016-02-12 18:44:21
【问题描述】:

我想用 Korma 执行以下原始 SQL:

k/exec-raw
 ["INSERT INTO events ?, VALUES ? ON CONFLICT (id) DO UPDATE SET title = EXCLUDED.title;" [keys values]]

参数等于:

keys (str "(" (keys->str res) ")")
values (str "(" (serialize (merge res) ", ") ")" )

两者都评估以纠正字符串并在 repl 中工作。

但在运行时我在 psql 控制台中出现以下错误:

ERROR:  syntax error at or near "$1" at character 20
STATEMENT:  INSERT INTO events $1, VALUES $2 ON CONFLICT (id) DO UPDATE SET title = EXCLUDED.title

无法弄清楚是什么问题。有人用 Korma 做过插入吗?

PostgreSQL 9.5 + Korma 0.4.2

【问题讨论】:

  • 参数不能这样工作,你不能提供部分 sql(或列名​​)作为参数。
  • 你能再详细点吗?

标签: postgresql clojure korma sqlkorma


【解决方案1】:

只有值可以用作准备好的语句中的参数。所以要让它发挥作用:

INSERT INTO events (column) VALUES (?)

如果你想像你一样工作,你必须自己准备 sql 字符串并确保你没有 sql 注入。 请看manual

【讨论】:

    猜你喜欢
    • 2012-03-07
    • 2011-04-26
    • 1970-01-01
    • 1970-01-01
    • 2013-02-25
    • 2020-12-04
    • 2021-11-04
    • 1970-01-01
    • 2021-02-27
    相关资源
    最近更新 更多