Vamos a ver cómo puedes utilizar MySQL en Python para así poder realizar operaciones y consultas SQL sobre bases de datos MySQL.
Si aún no has instalado MySQL debes hacerlo. También debes haber creado una base de datos para conectarte a ella. Si no lo has hecho, puedes hacerlo siguiendo el primer apartado de esta guía.
Contenidos
Configura una base de datos
Lo primero que debes hacer es crear una base de datos. Puedes hacerlo mediante la línea de comandos:
mysql -u USUARIO -p
Se te preguntará por la contraseña del usuario que has indicado. Tras introducir la contraseña utiliza estos comandos para crear una tabla. A modo de ejemplo crearemos la siguiente:
CREATE DATABASE neoguias;
Ahora selecciona la base de datos usuarios para trabajar con ella:
USE neoguias;
Ahora debes crear una tabla, que en este ejemplo será la siguiente:
CREATE TABLE IF NOT EXISTS usuarios (
id int(11) NOT NULL AUTO_INCREMENT,
nombre varchar(50),
apellido varchar(50),
PRIMARY KEY (id)
);
Vamos a insertar estos datos de ejemplo:
INSERT INTO usuarios (nombre, apellido) VALUES ("Eduardo", "Rodriguez");
INSERT INTO usuarios (nombre, apellido) VALUES ("Javier", "Martinez");
INSERT INTO usuarios (nombre, apellido) VALUES ("Sara", "Alvarez");
Cómo conectarte a la base de datos usando Python
Para poder acceder a la base de datos desde Python, debes instalar uno de los muchos paquetes que te permitirán hacerlo. Vamos a ver cómo instalar y utilizar los tres más famosos:
MySQL-python
Este paquete contiene el módulo MySQLdb, que está escrito en C. Este es el módulo MySQL más utilizado en Python.
Para instalar MySQL-python utiliza el siguiente comando:
pip install MySQL-python
Tras instalar el paquete, ya podrás trabajar con bases de datos MySQL. Vamos a ver cómo hacerlo con un ejemplo basado en la base de datos que hemos creado. Debes reemplazar USUARIO por tu nombre de USUARIO y PASS por la contraseña que hayas introducido:
#!/usr/bin/python
print "Resultados de MySQLdb:"
import MySQLdb
miConexion = MySQLdb.connect( host='localhost', user= 'USUARIO', passwd='PASS', db='neoguias' )
cur = miConexion.cursor()
cur.execute( "SELECT nombre, apellido FROM usuarios" )
for nombre, apellido in cur.fetchall() :
print nombre, apellido
miConexion.close()
En el ejemplo creamos una instancia de la conexión a MySQLdb y seguidamente ejecutamos una consulta. MySQLdb utiliza la API portable de bases de datos SQL, por lo que para ejecutar las consultas utilizamos las mismas funciones que con los otros módulos.
mysql-connector-python
Este paquete contiene el módulo mysql.connector, que está escrito en Python.
Para instalar el paquete mysql-connector-python utiliza el siguiente comando:
pip install mysql-connector-python
Tras instalar el paquete, ya podemos realizar consultas sobre bases de datos MySQL. Vamos a ver cómo hacerlo basándonos en el ejemplo anterior. Debes reemplazar USUARIO por tu nombre de USUARIO y PASS por la contraseña que hayas introducido:
#!/usr/bin/python
print "Resultados de mysql.connector:"
import mysql.connector
miConexion = mysql.connector.connect( host='localhost', user= 'USUARIO', passwd='PASS', db='neoguias' )
cur = miConexion.cursor()
cur.execute( "SELECT nombre, apellido FROM usuarios" )
for nombre, apellido in cur.fetchall() :
print nombre, apellido
miConexion.close()
En el ejemplo creamos una instancia de la conexión a mysql.connector y luego ejecutamos una consulta. mysql.connector también utiliza la API portable de bases de datos SQL, por lo que para ejecutar las consultas podemos utilizar las mismas funciones que con los otros módulos.
PyMySQL
Este paquete contiene el módulo pymysql, que está escrito en Python, siendo una especie de reemplazo de MySQL-python:
Para instalar el paquete de pymysql utiliza el siguiente comando:
pip install pymysql
Tras instalar el paquete realizaremos consultas sobre bases de datos MySQL. Nos basaremos en el mismo ejemplo que en los otros casos. Debes reemplazar USUARIO por tu nombre de USUARIO y PASS por la contraseña que hayas introducido:
#!/usr/bin/python
print "Resultados de PyMySQL:"
import pymysql
miConexion = pymysql.connect( host='localhost', user= 'USUARIO', passwd='PASS', db='neoguias' )
cur = miConexion.cursor()
cur.execute( "SELECT nombre, apellido FROM usuarios" )
for nombre, apellido in cur.fetchall() :
print nombre, apellido
miConexion.close()
Al igual que antes, creamos una instancia de la conexión y ejecutamos una consulta. PyMySQLtambién utiliza la API portable de bases de datos SQL.