Poesía Binaria

Utilizar una conexión MySQL desde EMACS

Encontré hace tiempo en una página que, lamentablemente, ya no está operativa una forma de utilizar EMACS como cliente MySQL, aunque intentaré ampliar dicha información con alguna experiencia personal. Aunque podemos utilizar directamente el SQL mode, es muy incómodo porque cada vez que nos queramos conectar tenemos que dar todos los datos de la conexión, y eso nos hace perder la paciencia a más de uno. Es verdad que para una conexión esporádica no está mal, pero si te sueles conectar siempre a los mismos servidores, esto puede resultar muy útil.

Debemos incluir en nuestro $HOME/.emacs todas las «conexiones amigas» que queramos tener de la siguiente manera:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
 (setq mysql-connections-list
'((mediacenter
(sql-product 'mysql)
(sql-server "192.168.0.1")
(sql-user "root")
(sql-password "password")
(sql-database "")
(sql-port 3306))
(local_trabajo
(sql-product 'mysql)
(sql-server "localhost")
(sql-user "root")
(sql-password "p4ssw0rd")
(sql-database "")
(sql-mysql-options '("--socket" "/tmp/mysql_sandbox5165.sock"))
(sql-port 5165))
(local_proyectos
(sql-product 'mysql)
(sql-server "localhost")
(sql-user "root")
(sql-password "contraseña")
(sql-database "")
(sql-mysql-options '("--socket" "/tmp/mysql_sandbox5166.sock"))
(sql-port 5166))))

En este caso tenemos 3 conexiones, la primera de ellas corresponde con el servidor MySQL del equipo que tengo como mediacenter, para la segunda y la tercera, en mi ordenador tengo dos servidores MySQL corriendo en sandbox, así aíslo el servidor de trabajo con el de mis proyectos personales (y el que usan varias aplicaciones de escritorio, que no lo he metido en EMACS). Para conectar a los servidores sandbox puedo establecer los argumentos que debo pasarle a mysql en sql-mysql-options, en este caso el socket a utilizar, cada argumento irá separado, aunque la sentencia –socket /direccion/del/socket.scok vaya seguida en la línea de comandos; además, debe ir expresada en forma de lista en Lisp.

Una vez tengamos esto, debemos, habilitar llamadas que nos permitan abrir cada una de las conexiones:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
(defun sql-connect-preset (name)
"Connect to a predefined SQL connection listed in `mysql-connections-list'"
(eval `(let ,(cdr (assoc name mysql-connections-list))
(flet ((sql-get-login (&rest what)))
(sql-product-interactive sql-product)))))

(defun mysql-mediacenter ()
(interactive)
(sql-connect-preset 'mediacenter))

(defun mysql-trabajo ()
(interactive)
(sql-connect-preset 'local_trabajo))

(defun mysql-proyectos ()
(interactive)
(sql-connect-preset 'local_proyectos))

Por tanto, a partir de ahora, puedo llamar con M-x a cada una de las conexiones, mysql-mediacenter, mysql-trabajo, mysql-proyectos y puedo empezar a trabajar con ellas, eso sí, tecleando mucho SQL, pero aprovechando la potencia de EMACS.

También podría interesarte....