Como iterar sobre chaves e valores de mapa?

Tenho o seguinte mapa que quero iterar:

(def db {:classname "com.mysql.jdbc.Driver" 
         :subprotocol "mysql" 
         :subname "//100.100.100.100:3306/clo" 
         :username "usr" :password "pwd"})

Eu tentei o seguinte, mas em vez de imprimir a chave e o valoruma ve, imprime repetidamente a chave e os valores como várias combinações:

(doseq [k (keys db) 
        v (vals db)] 
  (println (str k " " v)))

Eu vim com uma solução, mas a de Brian (veja abaixo) é muito mais lógic

(let [k (keys db) v (vals db)] 
  (do (println (apply str (interpose " " (interleave k v))))))

questionAnswers(4)

yourAnswerToTheQuestion