我正在编写一个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))))
返回相同的值,无论插入多少项。当然,如果我重新启动web应用程序,结果会被更新,但这似乎对生产环境不太友好:)。
你知道为什么会这样吗?提前谢谢。
(def home-view
(render
(base {:title "Clojure Todo"
:content (apply str
(map #(% :name)
(sql-query "select * from todos")))})))