Lisp:mysql.el trabaja en conjunción con el cliente de MySQL para poder ejecutar consultas desde Elisp en una base de datos.
(setq mi-mysql (mysql-connect)) (mysql-query sql mi-mysql) En caso de que necesites hacer sólo una consulta, deberías usar mysql-shell-query. Éste no crea un proceso como mysql-connect, por lo que no necesitás hacer ningún tipo de “limpieza”.
La sintaxis es: (mysql-shell-query sql &optional db)
Si la consulta puede tomar mucho tiempo, puede ser que prefieras hacerlo en segundo plano. Para ello puedes usar mysql-query-background.
La sintaxis es: (mysql-query-background sql conexion &optional func)
El parámetro opcional ‘func’ es una función que se ejecuta al terminar la consulta. Dos variables son importantes al usar esta característica:
‘mysql-intrival’ indica el retraso que tiene ‘mysql-timer’ para chequear si la consulta a terminado.‘mysql-timeout’ cuando la consulta dura más tiempo que el valor de esta variable, la consulta será detenida. Si deseas mucho tiempo, cambia esta variable antes de realizar la consulta y luego restáuralo por el valor original al finalizar la función ‘func’.Funciones y macros:
(mysql-table-header table) Retorna un alist en el cual posee cada encabezado del resultado su índice respectivo. ‘table’ es debe ser el resultado de la consulta. (mysql-col-number field) Get the column index of the field in result. The Global variable mysql-header is used. (mysql-col table field) Get the field of the result TABLE. FIELD can be a integer or the column name. (mysql-cell row field) Get the content of the row in field FIELD. FIELD can be a integer or the column name. (with-mysql-table table &rest body) This macro is for execute code BODY without change the global variable mysql-header.Variables importantes:
‘mysql-user’ Nombre de usuario de la base de datos. Por defecto es: "root".‘mysql-password’ Clave del usuario de la base de datos. Por defecto es. "".‘mysql-intrival’ Véase más arriba.‘mysql-timeout’ Véase más arriba.‘mysql-options’ Opciones del sub-proceso. Por defecto es "-s".‘mysql-program’ Nombre del program cliente a usar. Por defecto es "mysql".Un ejemplo de aplicación es Bibus, un manejador de referencias realizado por Ye Wenbin.
Para probar en el buffer borrador(scratch) o para usar en tu propio proyecto:
(let ((mysql-user "Mi Usuario")
(mysql-password "Mi Clave"))
(mysql-shell-query "Mi Consulta de Base de Datos;" "Mi Base de Datos")
)Existen problemas al querer conectar con otro host, ésta librería no provee en su API ninguna variable o facilidad para conectar con una base de datos remota. Para definir el host deberás cambiar la variable ‘mysql-options’ la cual deberá contener el parámetro -s : (setq mysql-options "-s -h mi.host.com").