Publi

Otra forma de trabajar con MySQL desde Emacs con org-mode y org-babel


Sé que org-mode vale para mucho más, pero es tan grande su utilidad, que hasta para esto nos puede servir, y nos permitirá hacer cosas muy chulas.

Aunque no es tan flexible como tener una instancia del comando mysql abierto, la potencia que nos ofrecerá para tratar la salida es grandísima.

Sólo tenemos que tener org-mode instalado, y org-babel configurado. Para configurar org-mode y org-babel, debemos introducir en nuestro $HOME/.emacs lo siguiente:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
(require 'org-install)

(org-babel-do-load-languages
 'org-babel-load-languages
 '((R . t)
   (ditaa . t)
   (dot . t)
   (emacs-lisp . t)
   (gnuplot . t)
   (haskell . nil)
   (latex . t)
   (ledger . t)        
   (ocaml . nil)
   (octave . t)
   (python . t)
   (ruby . t)
   (screen . nil)
   (sh . t)
   (sql . t)
   (sqlite . t)))

org-babel, prácticamente, nos permitirá evaluar código fuente de varios lenguajes interpretados, para introducirlo en documentos que podemos crear con org-mode y exportarlos en múltiples formatos. Tiene una documentación muy extensa y es un software muy flexible además de un imprescindible de EMACS.

Lo que vamos a hacer hoy es evaluar un pequeño código mysql, en concreto, un SELECT, cuya respuesta será una tabla. Para ello, algo que podemos introducir en una plantilla es lo siguiente:

1
2
#+begin_src sql :engine mysql :cmdline --socket=/tmp/mysql_sandbox5166.sock -uroot -ppassword
#+end_src

Aquí especificáis en :engine mysql (este modo soporta otros motores también), y en :cmdline todo lo necesario para conectar, usuario, password, y por ejemplo, si utilizáis mysql sandbox, el socket.

Las líneas #+begin_src y #+end_src son las que le dicen a org-babel que tiene que interpretar lo que hay dentro. Entonces, escribimos nuestra consulta, en este caso, es la base de datos de Krecipes:

1
2
3
#+begin_src sql :engine mysql :cmdline --socket=/tmp/mysql_sandbox5166.sock -uroot -ppassword
SELECT * FROM Krecipes.recipes
#+end_src

Ahora, situando el cursor dentro de la consulta, pulsamos C-c C-c y nos preguntará si queremos ejecutar este bloque, acto seguido, aparecerá en #+RESULTS: la tabla que ha devuelto MySQL. Pero ahí no acaba todo.

A partir de aquí podemos utilizar todas las comodidades que nos ofrece org-mode con las tablas como mover columnas, mover filas, eliminar filas y columnas, insertar información, insertar separadores, aplicar fórmulas, y además, podemos exportar las tablas como CSV (bueno, esto no tiene ningún mérito), ODT, PDF, LaTeX, HTML, y unos cuantos formatos más. Sólo tenemos que hacer M-x org-table- [TAB] para ver todas las posibilidades que tenemos o org-export [TAB]

Consejo

Podemos evaluar la expresión:

(setq org-confirm-babel-evaluate nil)

para evitar que se nos pregunte cada vez que vamos a evaluar un código, pero hemos de usarla con cuidado, cuando confiemos 100% en lo que escribimos.

También podría interesarte...

Only 1 comment left Ir a comentario

  1. Pingback: Bitacoras.com /

Leave a Reply