使用Korma进行原始SQL插入

时间:2016-02-12 18:44:22

标签: postgresql clojure korma sqlkorma

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

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

用params等于:

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

1 个答案:

答案 0 :(得分:1)

Only values can be used as parameters in a prepared statement. So to make it work:

INSERT INTO events (column) VALUES (?)

If you want to work it like you do you have to prepare the sql string yourself and make sure you don't have an sql injection. Please see the manual