Conectar con una base de datos MySQL desde Python (I)

1480896754_pythonCuando programaba (aún lo hago) aplicaciones web, utlizaba las utilidades PHP para conectar con bases de datos y poder tener la interacción con los datos que me hiciera falta en ese momento. Nunca había pensado que MySQL se pudiera utilizar fuera de las aplicaciones web. Pues resulta que gracias a mi nueva tarea de doctorando, estoy obligado a extraer datos de un servidor MySQL, pero no desde el gestor PHPMyAdmin que uso habitualmente, sino desde consola. Ya he experimentado con la conexión vía bash, pero necesito algo más versátil, así que hoy pensé en Python.

Existen varias maneras de conectar Python con un servidor MySQL, como vemos en los comentarios de los usuarios de StackOverflow. Después de haber investigado algo más, y de probar yo mismo desde la consola con Python, me decantaré por las dos maneras más usuales: MySQLdb y mysql connector.

Únicamente como datos informativos, diré que MySQLdb es un módulo de C que enlaza con la libreería libmysqlclient, es muy rápido, pero requiere esta librería para funcionar. De hecho, en mi caso, que uso Debian, esta librería debe ser instalada manualmente:

sudo apt-get install python-mysqldb

Por el contrario, mysql-connector es un módulo de Python que reimplementa el protocolo MySQL. Es algo más lento, pero al no precisar librerías C, es independiente del sistema operativo, por lo que es más portable.

En Charles Nagy hacen una comparativa de velocidad entre los dos métodos. La diferencia de velocidad, cuando se usa para aplicaciones pequeñas, es muy pequeña, y para el uso local, que es el que le voy a dar, la diferencia es inapreciable. Además, no necesito portar los scripts que genere, por lo que me decanto por MySQLdb.

El procedimiento es el siguiente:

  1. Abrir la conexión
  2. Abre un puntero (un cursor)
  3. Escribir la consulta (la query)
  4. Ejecutar la consulta (hacer un commit)
  5. Si fuera el caso, mostrar los resultados de la consulta (traer resultados, actualización de datos, etc)
  6. Cerrar el puntero
  7. Cerrar la conexión

Como ejemplo, directamente extraído de la web kitebird.com, un script que nos da la versión de la base de datos:

#!/usr/bin/python
 
import MySQLdb
 
conn = MySQLdb.connect (
    host = "localhost", 
    user = "testuser", 
    passwd =  "testpass", 
    db = "test")
 
 
cursor = conn.cursor ()
cursor.execute ("SELECT VERSION()")
row = cursor.fetchone ()
print "server version:", row[0]
cursor.close ()
conn.close ()

En la próxima entrada, escribiré sobre cómo hacer una consulta de selección (un SELECT).

 

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *