Просто сгенерируйте SQL из disj ClojureQL! Призывание! и обновление! функции - PullRequest
3 голосов
/ 07 сентября 2011

Есть ли способ просто генерировать sql-запросы из disj ClojureQL!Призывание!и обновление!функции, а не выполнять их напрямую?

1 Ответ

1 голос
/ 08 сентября 2011

Нет, эти методы напрямую выполняют свои соответствующие подготовленные операторы. Все они довольно простые. Для conj! и update-in! посмотрите на вызов format в функциях conj-rows и update-vals, которые вы можете найти в внутреннем пространстве имен:

 (format "INSERT INTO %s %s VALUES (%s)"
         (to-tablename table) columns template)

 (format "UPDATE %s SET %s WHERE %s"
         (to-tablename table) columns where)

Для disj! ClojureQL использует библиотеку clojure.java.jdbc delete-rows, которая содержит:

  (format "DELETE FROM %s WHERE %s"
          (as-identifier table) where)

Таким образом, в основном disj! получают возможность использовать макросы java.jdbc * with-naming-strategy и with-quoted-identifiers для имени таблицы, в то время как другие - нет.

...