3 julio, 2013

Conectarse a MySQL con Python

Siguiendo con el Python, he estado probando como funciona la conexión con bases de datos. Ya que tengo un servidor con MySQL instalado he probado con él.

Para poder conectar el Python con el servidor MySQL nos hace falta instalar la librería que hará de intermediario entre el MySQL y Python, por la red hay varias, pero me he decantado por la propia que distribuye Oracle. Elegimos el fichero para nuestro sistema y lo instalamos. Para Ubuntu / Debian podemos bajar el ficheros de la pagina o instalarlo a través del repositorio de Ubuntu, con el siguiente comando.

sudo apt-get install python-mysql.connector

Instalada la librería ya solo queda programar el código en Python, para ello importamos la librería.

import mysql.connector

Crearemos un variable que sera la encargada de manejar la conexión con el servidor de MySQL. Esto se puede hacer de dos maneras, poniendo toda los datos de la conexión en la función, o utilizar cuna variable con los datos como intermediaria.

1º Forma

conexion_mysql = mysql.connector.connect(user='usuario', password='contraseña', host='DireccionServidor', database='BaseDeDatos')

2º Forma, para decirle a la función que los datos están dentro de la variable hay que poner «**» (2 asteriscos) delante de la variable.

# Variable con la configuracion de la conexion
config_mysql = {
    'user': 'usuario',
    'password': 'contraseña',
    'host': 'DireccionServidor',
    'database': 'BaseDeDatos',
}

# conectamos al servidor MySql
conexion_mysql = mysql.connector.connect(**config_mysql)

Si esto no ha producido ningún error, ya estaremos conectados al servidor de MySQL. Ahora solo nos queda empezar ha trastear con las tablas. Para ello tendremos que crear otra variable que se encargara de realizar las consultas SQL y contendrá la información para esa consulta.

cursor = conexion_mysql.cursor()

Una vez creada esta variable, solo nos queda pasarle la sentencia de SQL que queramos ejecutar.

cursor.execute("SELECT Campo1, Campo2, Campo3 FROM Tabla1")

Ahora ya tenemos la información en la variable, y podremos hacer con ella lo que nos de la gana, para mostrar todos los datos de la consulta, por ejemplo, solo tendríamos que hacer lo siguiente:

for (Campo1, Campo2, Campo3) in cursor:
    print("Campo1: " + Campo1 + ", Campo2: " + Campo2 + ", Campo3: " + Campo3)

Una vez que ya hemos obtenido la información deseada, solo nos queda cerrar las conexiones, tanto de la variable que se encarga de procesar las consultas de SQL, como la encargada de la conexión con el servidor.

# Cerramos la variable encargada de las consultas
cursor.close()

# Cerramos la conexión
conexion_mysql.close()

Y con esto ya valdría para conectarnos ha una base de datos en MySQL y consultar la información de una tabla.

 

Código completo del ejemplo.

#! /usr/bin/env python

# Importamos el conector de MySQL
import mysql.connector

# Variable con la configuracion de la conexion
config_mysql = {
    'user': 'usuario',
    'password': 'pass',
    'host': 'localhost',
    'database': 'prueba',
}

# conectamos al servidor MySql
conector = mysql.connector.connect(**config_mysql)

# cursor, clase para el manejo del SQL ???
cursor = conector.cursor()

# Creamos la consulta SQL
query = ("SELECT Nombre, Telefono FROM prueba")

# Ejecutamos la consula SQL
cursor.execute(query)

# Mostramos todos los datos de la consulta
for (Nombre, Telefono) in cursor:
    print("Nombre: " + Nombre + ", Telefono: " + Telefono)

# Cerramos cursor
cursor.close()

# Cerramos la conexion
conector.close()