我正在编写一个 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")))})))