MySQL es un popular sistema de gestión de bases de datos multiplataforma de tipo relacional que proporciona un excelente rendimiento, seguridad y flexibilidad.
MySQL lo utilizan en infinidad de empresas y desde hace años es uno de los productos estrellas en el juego de herramientas LAMP para servidores y aplicaciones web.
Por su parte Python, debido a su carácter todoterreno, es una de las opciones para trabajar con MySQL y algunos frameworks basados en este lenguaje, como Django o Pyramid, soportan también esta base de datos. MySQL da soporte a aplicaciones muy conocidas de Internet: desde la Wikipedia a las redes sociales Reddit, Twitter, Youtube... y muchos más.
En la sección de anexos de Python para impacientes hemos incluido una Guía urgente de MySQL con información esencial para un programador Python para instalar MySQL en un servidor GNU/Linux Debian/Ubuntu y operar con una base de datos desde el Shell. La base de datos personal que se utiliza en los ejemplos de la guía es la que vamos utilizar también en los ejemplos de este artículo. Si no tienes experiencia con MySQL recomendamos la realización de los ejemplos que se proponen en dicha guía.
A continuación, contando la infraestructura necesaria instalada, con MySQL funcionando, vamos a mostrar varios ejemplos que utilizan el paquete Python PyMySQL para conectarse y operar con la base de datos personal de la mencionada guía.
PyMySQL es un paquete desarrollado por el japonés Yutaka Matsubara que permite trabajar tanto con bases de datos del gestor MySQL como de MariaDB, un derivado del primero con licencia GPL que utiliza los mismos comandos, interfaces, APIs y bibliotecas.
MySQL lo utilizan en infinidad de empresas y desde hace años es uno de los productos estrellas en el juego de herramientas LAMP para servidores y aplicaciones web.
Por su parte Python, debido a su carácter todoterreno, es una de las opciones para trabajar con MySQL y algunos frameworks basados en este lenguaje, como Django o Pyramid, soportan también esta base de datos. MySQL da soporte a aplicaciones muy conocidas de Internet: desde la Wikipedia a las redes sociales Reddit, Twitter, Youtube... y muchos más.
En la sección de anexos de Python para impacientes hemos incluido una Guía urgente de MySQL con información esencial para un programador Python para instalar MySQL en un servidor GNU/Linux Debian/Ubuntu y operar con una base de datos desde el Shell. La base de datos personal que se utiliza en los ejemplos de la guía es la que vamos utilizar también en los ejemplos de este artículo. Si no tienes experiencia con MySQL recomendamos la realización de los ejemplos que se proponen en dicha guía.
A continuación, contando la infraestructura necesaria instalada, con MySQL funcionando, vamos a mostrar varios ejemplos que utilizan el paquete Python PyMySQL para conectarse y operar con la base de datos personal de la mencionada guía.
PyMySQL es un paquete desarrollado por el japonés Yutaka Matsubara que permite trabajar tanto con bases de datos del gestor MySQL como de MariaDB, un derivado del primero con licencia GPL que utiliza los mismos comandos, interfaces, APIs y bibliotecas.
Instalar PyMySQL con PIP
Para instalar el paquete PyMySQL:
$ pip install pymysql
$ pip install pymysql
Conectar con base de datos y obtener datos de una tabla
El siguiente ejemplo muestra cómo conectar con PyMySQL con la base de datos personal y leer todos los registros de la tabla Usuarios:
import pymysql # Conectar con base de datos conexion = pymysql.connect(host="localhost", user="alejandro", passwd="2018_alejandro", database="personal") cursor = conexion.cursor() # Recuperar registros de la tabla 'Usuarios' registros = "SELECT * FROM Usuarios;" # Mostrar registros cursor.execute(registros) filas = cursor.fetchall() for fila in filas: print(fila) # Finalizar conexion.commit() conexion.close()
Añadir una tabla nueva
Este ejemplo muestra el modo de agregar una tabla llamada Oficinas a la base de datos personal con PyMySQL.
import pymysql # Conectar con base de datos conexion = pymysql.connect(host="localhost", user="alejandro", passwd="2018_alejandro", database="personal") cursor = conexion.cursor() # Agregar nueva tabla 'Oficinas' a la base de datos 'personal' TablaOficinas = """CREATE TABLE Oficinas( denom CHAR(20), provin CHAR(10), PRIMARY KEY (denom))""" cursor.execute(TablaOficinas) print("Se ha agregado la tabla 'Oficinas' a la base de datos") # Cerrar conexión conexion.close()
Insertar registros en la tabla nueva
En el código siguiente se insertan tres registros en la tabla Oficinas.
import pymysql # Conectar con base de datos conexion = pymysql.connect(host="localhost", user="alejandro", passwd="2018_alejandro", database="personal") cursor = conexion.cursor() # Definir comandos para insertar registros registro1 = "INSERT INTO Oficinas VALUES ('Central', 'Sevilla');" registro2 = "INSERT INTO Oficinas VALUES ('Norte', 'Bilbao');" registro3 = "INSERT INTO Oficinas VALUES ('Extremadura', 'Badajoz');" # Ejecutar comandos cursor.execute(registro1) cursor.execute(registro2) cursor.execute(registro3) # Finalizar transacción y cerrar conexion.commit() conexion.close()
Mostrar tablas y obtener datos de la tabla nueva
En el siguiente ejemplo se listan las tablas de personal y los registros de la tabla Oficinas.
import pymysql # Conectar con base de datos conexion = pymysql.connect(host="localhost", user="alejandro", passwd="2018_alejandro", database="personal") cursor = conexion.cursor() # Recuperar registros de la tabla 'Oficinas' tablas = "SHOW TABLES;" registros = "SELECT * FROM Oficinas;" # Mostrar tablas cursor.execute(tablas) filas = cursor.fetchall() print("Tablas de 'personal':") for fila in filas: print(fila) # Mostrar registros cursor.execute(registros) filas = cursor.fetchall() print("Registros de 'Oficinas':") for fila in filas: print(fila[0], ":", fila[1]) # Finalizar conexion.commit() conexion.close()
Borrar una tabla
Por último, un ejemplo para borrar la tabla Oficinas de la base de datos.
import pymysql # Conectar con base de datos conexion = pymysql.connect(host="localhost", user="alejandro", passwd="2018_alejandro", database="personal") cursor = conexion.cursor() # Construir comando para borrar tabla BorrarTabla = "DROP TABLE IF EXISTS Oficinas;" # Borrar tabla cursor.execute(BorrarTabla) print("Se ha suprimido una tabla de la base de datos") # Finalizar transacción y cerrar conexion.commit() conexion.close()
Puedes consultar información de las funciones, clases y métodos de PyMySQL en la documentación de ReadTheDocs.
Ir al índice del tutorial de Python