clojure使用postgis

 

主要关注访问pg。不关心其他db

1 clojure.java.jdbc

http://clojure-doc.org/articles/ecosystem/java_jdbc/reusing_connections.html 这个最广,需要配合不同DB
[org.clojure/java.jdbc "0.7.9"]
[org.postgresql/postgresql "42.2.5"]

问题是,每次查询都要单独连接一次db, 原生只支持3种复用方式:

Using with-db-connection

Using with-db-transaction

Using Connection Pooling(第三方)

没有通常的connection cursor 机制,不知道怎么想的……

懒得搭理,不贴代码了。

2 jdbc.core

:dependences

[funcool/clojure.jdbc "0.9.0"]

使用时

(require '[jdbc.core :as jdbc])

https://funcool.github.io/clojure.jdbc/latest/#introduction

这个中规中矩的。有通常的connection cursor ,但是连接db时用的db-spec的定义和前面那个不一样,另搞了一套,也没什么可说的。平淡无奇,感觉就是py里的psycopg2

3 clj-postgresql

https://github.com/remodoy/clj-postgresql

这个因为专门针对pg所以有点很多:

1 支持用环境变量PGHOST, PGPORT, PGUSER PGDATABASE定义连接参数 免去硬编码,这对运行在docker容器里的应用尤其方便。docker-compose里设置就好了。

2 居然支持postgis的类型!

 

那么就用它了!

:dependences
[clj-postgresql "0.7.0"]

 

 

每个库在github上星都是区区几百而已。用Clojure的人真的很少啊

 

 

 

上一篇:超图supermap sdx数据库用sql实现空间查询


下一篇:psycopg2+postgis+pgAdmin4