Supuesto: ya tiene ambos Clojure y MySQL ejecutándose en su máquina.
¿Cómo los haces hablar?¿Cómo me conecto a una base de datos MySQL desde Clojure?
Respuesta
Hipótesis: ya tiene ambos Clojure y MySQL ejecutándose en su máquina.
la caja y construir clojure-contrib:
git clone git://github.com/richhickey/clojure-contrib.git cd clojure-contrib build
Ponga el resultado clojure-contrib.jar en su CLASSPATH.
Descargar MySQL Connector/J y poner el mysql-connector-java-5.1.7-bin.jar en su CLASSPATH
Puede que tenga que ejecutar la JVM con estos argumentos:
-Djdbc.drivers=com.mysql.jdbc.Driver
determinar la URL de conexión de la base de datos MySQL
Por ejemplo, si está ejecutando MySQL bajo MAMP continuación, la URL que usaría en JDBC se verá algo como:
conn = DriverManager.getConnection ("jdbc:mysql://localhost:8889/db_name?user=root&password=root")
La url se divide en los siguientes componentes:
- protocolo:
jdbc:
- subprotocolo:
mysql
- db-host:
localhost
- db-puerto:
8889
- nombre de usuario
- contraseña
- protocolo:
Hacer este script clojure, modifique los parámetros de conexión de base de datos para que coincida con su URL, Guardar como test.clj, compilar y ejecutar.
(use 'clojure.contrib.sql) ;;' satisfy prettify
(let [db-host "localhost"
db-port 8889
db-name "db_name"]
(def db {:classname "com.mysql.jdbc.Driver"
:subprotocol "mysql"
:subname (str "//" db-host ":" db-port "/" db-name)
:user "root"
:password "root"})
(with-connection db
(with-query-results rs ["select * from languages"]
(dorun (map #(println (:language :iso_code %)) rs)))))
; rs will be a sequence of maps,
; one for each record in the result set.
NB Este código fue adaptado de código similar escrito por Mark Volkmann a access a Postgres database from Clojure
Esta es una respuesta Lein-amigable, con mucha orientación de this blog by Nurullah Akkaya:
complemento dependencias a su
project.clj
:(defproject clojql "1.0.0-SNAPSHOT" :description "FIXME: write description" :dependencies [[org.clojure/clojure "1.2.1"] [org.clojure/clojure-contrib "1.2.0"] ;; for clojure.contrib.sql [org.clojure/java.jdbc "0.0.6"] ;; jdbc [mysql/mysql-connector-java "5.1.6"]]) ;; mysql driver
plazo
lein deps
desde la línea de comandos para agarrar las dependenciasespecificar la información de conexión en un mapa:
user=> (use 'clojure.contrib.sql) nil user=> (def db {:classname "com.mysql.jdbc.Driver" :subprotocol "mysql" :subname "//localhost:3306/nmr" :user "root"})
uso
with-connection
ywith-query-results
macros (& others):user=> (with-connection db (with-query-results rs ["select * from sometable"] (count rs))) 667
pasos 3 4 & pueden ser o bien a partir de la réplica (lein repl
para iniciarlo) o en el código fuente normal
¡Gracias! Por cierto, las últimas versiones "estables" en este momento son 1.4.0 para clojure, 0.2.3 para java.jdbc y 5.1.22 para mysql-connector-java. clojure-contrib ya no es necesario y clojure.contrib.sql ahora es parte de java.jdbc. Consulte https://github.com/clojure/java.jdbc para ver un ejemplo. – raylu
Si quieres un poco de azúcar sintáctica, puede intentar Korma.
(use 'korma.db)
(defdb db (postgres {:db "mydb"
:user "user"
:password "dbpass"}))
(use 'korma.core)
(defentity users)
(select users)
;; executes: SELECT * FROM users
(select users
(where (or (= :usersname "chris")
(= :email "[email protected]"))))
;; executes: SELECT * FROM users WHERE (users.usersname = 'chris' OR users.email = '[email protected]')
Sin embargo, eso no es realmente de mysql. – Ven
@Ven, mientras que el 'defdb' en el fragmento anterior señala a Postgres, la documentación cubre MySql entre otras bases de datos. Consulte aquí: http://sqlkorma.com/docs#db Quizás el fragmento de código se pueda actualizar para tener una mejor correlación con la pregunta. –
A partir de 2016:
usando Leiningen, agregar dependencias dentro project.clj:
:dependencies [[org.clojure/clojure "1.8.0"]
[org.clojure/java.jdbc "0.4.2"]
[mysql/mysql-connector-java "5.1.38"]]
requieren conector de base de datos en el interior del espacio de nombres definición:
(ns name.space
(:require [clojure.java.jdbc :as j]))
definir la conexión de base de datos:
(def db-map {:subprotocol "mysql"
:subname "//localhost:3306/SCHEME"
:user "DB_USER"
:password "DB_USER_PASS"})
consulta la base de datos:
(j/query db-map ["SELECT * FROM table"])
Ver más ejemplos en http://clojure-doc.org/articles/ecosystem/java_jdbc/using_sql.html
- 1. ¿Cómo me conecto a una base de datos SQL desde C#?
- 2. ¿Cómo me conecto a una base de datos Oracle en R?
- 3. ¿Cómo me conecto a múltiples bases de datos usando JPA?
- 4. ¿Cómo me conecto a una base de datos y recorro un conjunto de registros en C#?
- 5. ¿Cómo me conecto a una base de datos en IronWorker usando ActiveRecord?
- 6. ¿Cómo me conecto a una base de datos existente en ASP.NET MVC?
- 7. ¿Cómo me conecto al archivo SQLite db desde C#?
- 8. ¿Cómo conecto CakePHP a una base de datos SQLite?
- 9. ¿Cómo me conecto a un archivo de base de datos MDF?
- 10. ¿Cómo me conecto a una cámara web USB en .NET?
- 11. Cómo copiar una tabla de una base de datos mysql a otra base de datos mysql
- 12. ¿Cómo me conecto a una base de datos MSSQL usando el módulo DBI de Perl en Windows?
- 13. ¿Cómo me conecto con Perl a SQL Server?
- 14. ¿Cómo elimino una base de datos MySQL?
- 15. ¿Cómo me conecto a un puerto UDP en Python?
- 16. Crear base de datos MySQL desde Java
- 17. ¿Cómo me conecto a un .mdf (archivo de base de datos de Microsoft SQL Server) en un proyecto web simple?
- 18. ¿Cómo conecto con seguridad una aplicación Backbone.js a una base de datos?
- 19. ¿Cómo me conecto a un servidor SVN en ubuntu?
- 20. ¿Cómo eliminar desde una base de datos?
- 21. ¿Cómo conecto un archivo fuente de clojure a un clojure repl en ejecución en Emacs?
- 22. ¿Cómo me conecto a otros programas en Windows?
- 23. ¿Cómo me conecto a SQL Server usando Emacs?
- 24. ¿Cómo me conecto a mongodb con node.js (y autenticar)?
- 25. Use una base de datos con Clojure
- 26. Accediendo a XAMPP Base de datos MySql desde otra computadora
- 27. ¿Cómo exportar una base de datos MySQL a JSON?
- 28. MySQL: ¿Cómo convertir una base de datos a solo lectura?
- 29. ¿Cómo cambiar una base de datos MySQL a UTC?
- 30. Cómo convertir una base de datos MySQL a XML?
El comentario (;;' ignoran) en la primera línea no es una parte obligatoria del código fuente; se agregó a pre servir la coloración de sintaxis de la fuente de Clojure. – devstopfix
El paso 1 es ahora: git clone git: //github.com/richhickey/clojure-contrib.git –
Tenga en cuenta que probablemente no podrá conectarse directamente a un servidor remoto, por lo que podría ser una buena idea realizar un puerto. reenviar un puerto local aleatorio al servidor con algo como 'ssh -L 1234: localhost: 3306 user @ remoteserver'. Además, compruebe la pantalla GNU para que sea más fácil tratar con múltiples terminales. – konr