Я пишу приложение Compojure TODO и MySQL в качестве основного хранилища данных.Я использую clojure.contrib.sql для взаимодействия с MySQL следующим образом:
(def db {:classname "com.mysql.jdbc.Driver"
:subprotocol "mysql"
:subname "//localhost:3306/todo"
:user "<user>"
:password ""})
Запросы, которые я использую, похоже, работают, однако результаты выглядят кэшированными.Например, после запуска
(with-connection db
(insert-values :todos
[:name] [name]))
значение успешно вставлено в базу данных.Однако
(defn sql-query [query]
(with-connection db
(with-query-results rows [query]
(into [] rows))))
возвращает одно и то же значение независимо от того, сколько элементов вставлено.Конечно, если я перезапущу веб-приложение, результаты будут обновлены, но это не очень удобно для производства:).
Есть идеи, почему это происходит?Заранее спасибо.
По запросу, здесь находится форма верхнего уровня для запроса SELECT:
(def home-view
(render
(base {:title "Clojure Todo"
:content (apply str
(map #(% :name)
(sql-query "select * from todos")))})))