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()

 

 

 

8 comentarios sobre “Conectarse a MySQL con Python”

  1. Hola que tal, estuve revisando el codigo , pero por alguna razon me dice que la variable user no esta definida…
    estoy intentanto loguearme como root… el usuario que viene por defecto…

    Gracias

    1. Así sin ver nada más del código que tienes, lo único que puedo decirte es que revises el código, alguna palabra mal escrita o cosas así. Me imagino que ya lo has hecho pero prueba con las dos opciones. Si saber más el lo único que te puedo decir. Otra cosa, por razones de seguridad limitaría el uso del “root”. Crea un usuario en el MySql para el manejo de esa base de datos, y así limitar males mayores. Aunque tengas el servidor en local y de prueba el mejor usar un usuario para el manejo de cada base de datos.

  2. Excelente. Las dos opciones funcionan a la perfección. Sólo te falta que cuelgues un video en tu canal con este material. No encontré uno que lo explique como lo has hecho. Hay mucho material pero para Python 2.7, mas no para Pyton 3.4 + MySQL 5.6.

  3. tengo un problema trato de cargar al cargar tu codigo desde ninja lo corro y no me hace nada, cuando me voy al shell de pyton me dice que:

    importerror: cannot import name version

  4. – Cuando pones el nombre de usuario y la contraseña en el conector, lo acabo de instalar, aún no tengo usuarios de base de datos, como creo esos usuarios??

    1. Si no sabes mucho de como gestionar el servidor de mysql, te recomiendo que instales, phpmyadmin si tu servidor también tiene servidor web, sino puedes utilizar el programa de Wordbeach, creo que se escribe así, si no en la pagina de mysql lo tienes para descargar.

Deja un comentario

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

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.