2016-02-12 2 views
0

Je veux exécuter SQL suivante cru avec Korma:Raw SQL insert avec Korma

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

avec params égal à:

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

Les deux cordes pour corriger évaluer et de travailler dans rempl.

Mais dans l'exécution j'ai l'erreur suivante dans la console 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 

ne peux pas comprendre quel est le problème. Quelqu'un a déjà fait insérer avec Korma?

PostgreSQL 9.5 + Korma 0.4.2

+0

Les paramètres ne fonctionnent pas comme ça, vous ne pouvez pas fournir des parties de sql (ou les noms de colonnes d'ailleurs) en tant que paramètre. –

+0

Pourriez-vous s'il vous plaît entrer plus de détails? – walkthroughthecode

Répondre

1

Seules les valeurs peuvent être utilisées en tant que paramètres dans un communiqué. Donc, pour le faire fonctionner:

INSERT INTO events (column) VALUES (?) 

Si vous voulez travailler comme vous avez-vous pour préparer la chaîne sql vous et assurez-vous que vous ne disposez pas d'une injection sql. S'il vous plaît voir le manual