Clojure 从数据库表中选择的值返回nil
我是clojure的新手,我正在尝试从数据库中选择值。它确实选择了值(我认为),尽管它只返回nil 我试着跟着教程走 这是我的密码Clojure 从数据库表中选择的值返回nil,clojure,Clojure,我是clojure的新手,我正在尝试从数据库中选择值。它确实选择了值(我认为),尽管它只返回nil 我试着跟着教程走 这是我的密码 (ns hello.core_test) (:require [clojure.java.jdbc :as sql])) (def mysql-db { :subprotocol "mysql" :subname "//localhost:3307/blink" :user "root" :passwor
(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个变量)
编辑。很明显,如果我移除
:行fn:firstName
并将其替换为
:行:名字
它以如下格式返回
({:名天使{:名奥斯汀{:名恩里科{:名威尔森{:名基思}{:名约书亚{:名罗恩·安德烈}{:名艾伦·杰伊{:名伊万})
clojure.java.jdbc
默认情况下将列转换为(>column name clojure.string/lower-case关键字)
,您自己已经回答了部分问题,显示结果时没有:行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"})
如果删除
:row fn:firstName
,并且此代码无效,您会得到什么。您的ns
宏在:require
之前结束。请发布您的实际代码。^Uhm我认为这是堆栈溢出中的粘贴问题。我的名称空间包含:require.If我删除:行fn:firstname。它以{:firstName Value}格式返回谢谢。我现在正在尝试查找JDBC的更新版本:D