sqliteテーブルへの書き込みには、http-kitの非同期動作があります。async clojureデータベースにコールバックを書き込むhttp-kitクライアントsqlite3
データベースへの入出力は、コードをboot
に送信するか、boot
スクリプトとして実行するかによって異なります。 i/oはreplの場合にのみ進行します。私は何が欠けていますか?ここに私のコードがs:スクリプトは、コマンドラインから動作していないと
#!/usr/bin/env boot
(defn deps [new-deps]
(boot.core/merge-env! :dependencies new-deps))
(deps '[
[http-kit "2.2.0"]
[org.clojure/core.async "0.2.395"]
[org.clojure/java.jdbc "0.7.0-alpha1"]
[org.xerial/sqlite-jdbc "3.16.1"]
[org.slf4j/slf4j-nop "1.7.22"]
])
(require
'[org.httpkit.client :as http]
'[clojure.java.jdbc :as jdbc]
)
(def db-spec
{:classname "org.sqlite.JDBC"
:subprotocol "sqlite"
:subname "sqlite.db"})
;(jdbc/db-do-commands
;db-spec
;(jdbc/create-table-ddl "test" [[:msg :text]]))
(def ins! (partial jdbc/insert! db-spec "test"))
(http/get "http://locahost" {} (fn [_] (ins! {:msg "repl"})))
(defn -main []
(println (System/getProperty "user.dir"))
(http/get "http://locahost" {} (fn [_] (ins! {:msg "exec"}))))
おかげ
:ちょうどタイムアウト-MSおよびタイムアウト値の引数を持つ
deref
を呼び出す - あなたは無期限にブロックされないしたいとき完全な形式が良いかもしれません仕事は?これにはいくつかの問題があります:clojure.java.jdbcの依存関係が欠けていて、あなたの質問に必須ではなく、パブリックなリポジトリでは利用できない 'web'依存関係が指定されています。 –