我对Clojure真的很陌生,我正在尝试从数据库中选择值。它确实选择了值(我认为),尽管它只返回nil
我尝试按照https://www.tutorialspoint.com/clojure/clojure_databases.htm
中的教程进行操作这是我的代码
(ns hello.core_test)
(:require [clojure.java.jdbc :as sql]))
(def mysql-db {
:subprotocol "mysql"
:subname "//localhost:3307/blink"
:user "root"
:password ""})
(println (sql/query mysql-db
["select firstName from users"]
:row-fn :firstName))
它返回
(nil nil nil nil nil nil nil nil nil)
(数据库包含9个变量)
Here is the picture of my column
已编辑。如果我删除
:row-fn:firstName
并替换为
:row:firstName
它以这种格式返回
({{:firstname Angel} {:firstname Austin} {:firstname enrico} {:firstname wilzen} {:firstname keith} {:firstname Joshua} {:firstname Ron Andre} {:firstname Allen Jay} {:firstname Ivan })
答案 0 :(得分:0)
{clojure.java.jdbc
默认情况下会像(-> column-name clojure.string/lower-case keyword)
那样转换列,您已经部分地自己回答了,而没有显示:row-fn
。
现在,使用[org.clojure/java.jdbc "0.7.7"]
对我有用:
(sql/query mysql-db ["select firstName from users"] {:row-fn :firstname})
如果您不想自动转换:
(sql/query mysql-db ["select firstName from users"] {:identifiers identity :keywordize? false})
;; => ({"firstName" "one"} {"firstName" "two"} {"firstName" "three"})