我想用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
无法弄清楚问题出在哪里。有人曾经和科尔马做过插入吗?
PostgreSQL 9.5 + Korma 0.4.2
只有值可以用作预准备语句中的参数。因此,要使其工作:
INSERT INTO events (column) VALUES (?)
如果你想像你一样工作,你必须自己准备sql字符串,并确保你没有sql注入。请参阅手册