Accediendo a MySQL con Python y MySQLdb
MySQLdb es un módulo que implementa la API estándar (PEP249) para manejo de bases de datos, en este caso MySQL. MySQLdb es en realidad un wrapper del módulo _mysql que provee Python, el cual implementa la mayoría de las funciones definidas en la API C de MySQL. La idea de definir una API estándar es que uno debería poder cambiar a otra base de datos sin modificar demasiado el código.
This API has been defined to encourage similarity between the Python modules that are used to access databases.
Instalación MySQLdb
El paquete que nos provee el módulo se llama python-mysqldb. Podemos comprobar que lo tenemos instalado mediante
Si no existe lo instalamos
Para comprobar que efectivamente tenemos el módulo disponible y funcionando llamamos al intérprete de Python y escribimos
Un silencioso retorno de carro indica que podemos el módulo ha sido cargado. Salimos del intérprete conC-d.
Creación de una DB de pruebas
Para nuestro ejemplo crearemos una base de datos con una única tabla. Entramos a la consola de MySQL y escribimos
Query OK, 1 row affected (0.01 sec)
mysql> USE test;
Database changed
mysql> CREATE TABLE users (
-> id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
-> name VARCHAR(100),
-> lastname VARCHAR(100)
-> );
Query OK, 0 rows affected (0.01 sec)
mysql> INSERT INTO users (name, lastname) VALUES
-> ('Juan', 'Perez'),
-> ('Ana Maria', 'Lopez'),
-> ('Carlos L.', 'Gutierrez');
Query OK, 3 rows affected (0.00 sec)
Records: 3 Duplicates: 0 Warnings: 0
Nuestra tabla users quedó entonces
Creación del script mysqldb.py
Creamos el siguiente script que se conectará a la base de datos test y traerá todos los datos de los usuarios cargados en la tabla users. En el script es necesario reemplazar <user> y <pass> por los datos requeridos para acceder a tu DB.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 | #!/usr/bin/python import MySQLdb # Conexion a la base de datos conn = MySQLdb.connect (host="localhost", user="<user>", passwd="<pass>", db="test") # Creacion cursor cursor = conn.cursor() # Ejecucion query cursor.execute("SELECT * FROM users") # Manejo de datos devueltos por la consulta while True: row = cursor.fetchone() if row is None: break else: print "id: %s\tname: %s %s" % (row[0], row[1], row[2]) # Finalizado cursor y objeto conexion cursor.close() conn.close() |
La salida debería ser
id: 2 name: Ana Maria Lopez
id: 3 name: Carlos L. Gutierrez



