从数据库表中选择的值返回nil

时间:2018-07-22 16:51:25

标签: clojure

我对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 })

1 个答案:

答案 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"})