[230305] clojure and sqlite
Table of Contents
1 Motivation
I've encountered an application called "Litestream" basically. basically, it backs-up sqlite data including WAL. I think this is a great idea to use sqlite in production for my personal web service (which I don't have now).
there is a good service called "fly.io". they are thinking of using sqlite seriously.
so, I think sqlite will grow more. it is efficient and cheap(this is a main reason for my future web service)
let's take a look. how to use it.
2 code
2.1 deps.edn
{:path ["src"] :deps [org.clojure/java.jdbc {:mvn/version "0.7.12"}]}
2.2 core.clj
(ns core (:require [clojure.java.jdbc :as jdbc])) (def db {:connection-uri "jdbc:sqlite:db/review.db"}) (defn create-table [] (jdbc/db-do-commands db (jdbc/create-table-ddl :reviews [[:content :text]]))) (defn init-test-data [] (let [data {:content "this is content"}] (jdbc/insert! db :reviews data))) (defn print-all-reviews [] (jdbc/query db ["select rowid, * from reviews"])) (comment (create-table) (init-test-data) (print-all-reviews))
really simple
3 with next.jdbc
(ns core (:require [next.jdbc :as jdbc])) (def db {:connection-url "jdbc:sqlite:b/review.db"}) (defn create-db [] (jdbc/execute! db ["create table reviews (content text)"])) (defn init-test-data [] (jdbc/execute-one! db ["insert into reviews(content) values ('number 1'), ('number 2'), ('number 3')"])) (defn print-all-reviews [] (jdbc/execute! db ["select rowid, * from reviews"])) (comment (create-db) (init-test-data) (print-all-reviews) ;; )