IESTP CHOCOPE PROGRAMACION DISTRIBUIDA
MySQL: Base de datos desde Python
Cuando tenemos que almacenar gran cantidad de datos y su posterior
procesamiento es muy común utilizar un gestor de bases de datos.
Con Python podemos comunicarnos con un gestor de bases de datos para
enviar y recuperar datos.
Existen gran cantidad de gestores de bases de datos y el primero que
veremos para ver cual es la mecánica para conectarnos desde Python será
el gestor de base de datos MySQL.
Deberemos instalar primero si no lo tenemos a MySQL.
Instalación de MySQL.
Para facilitar la administración del MySQL utilizaremos el programa XAMPP
que entre otros instala:
• MySQL
• PHPMyAdmin (que nos permitirá administrar las bases de datos
existentes en MySQL)
• PHP (Lenguaje que nos permite ejecutar el PHPMyAdmin)
• Apache (Servidor Web que nos permite ejecutar PHPMyAdmin y PHP
en un servidor)
Descargamos e instalamos XAMPP para el sistema operativo que estamos
trabajando.
Los pasos para instalar son muy sencillos:
1
Docente: Ing. Luis Jeancarlos Mendoza Asmat
IESTP CHOCOPE PROGRAMACION DISTRIBUIDA
2
Docente: Ing. Luis Jeancarlos Mendoza Asmat
IESTP CHOCOPE PROGRAMACION DISTRIBUIDA
3
Docente: Ing. Luis Jeancarlos Mendoza Asmat
IESTP CHOCOPE PROGRAMACION DISTRIBUIDA
Una vez finalizada la instalación de todo el software debemos arrancar el
programa "XAMPP Control Panel"
Aparece la interfaz desde donde debemos iniciar el gestor de base de datos
MySQL:
Presionamos el botón "Start" tanto para MySQL como para Apache:
4
Docente: Ing. Luis Jeancarlos Mendoza Asmat
IESTP CHOCOPE PROGRAMACION DISTRIBUIDA
Si aparecen en verde significa que los programas se encuentran
correctamente en funcionamiento.
Creación de la base de datos MySQL.
Para crear la base de datos utilizaremos el programa PHPMyAdmin que lo
iniciamos presionando el botón "MySQL - Admin" del "XAMPP Control Panel":
5
Docente: Ing. Luis Jeancarlos Mendoza Asmat
IESTP CHOCOPE PROGRAMACION DISTRIBUIDA
Se nos abre una aplicación web PHPMyAdmin que nos permite administrar
nuestras bases de datos de MySQL:
6
Docente: Ing. Luis Jeancarlos Mendoza Asmat
IESTP CHOCOPE PROGRAMACION DISTRIBUIDA
Almacenaremos en la tabla articulos el codigo, descripcion y precio.
El campo 'codigo' será int'clave primaria' y auto_increment.
El campo 'descripcion' será varchar de 50.
El campo 'precio' será float.
Los datos a ingresar para cada campo para la creación de la tabla articulos
son:
7
Docente: Ing. Luis Jeancarlos Mendoza Asmat
IESTP CHOCOPE PROGRAMACION DISTRIBUIDA
Ya tenemos creada la base de datos: "bd1" y en ésta la tabla "articulos":
Paquete de Python necesario para conectarnos a MySQL.
Utilizaremos el programa 'pip' que vimos anteriormente para instalar el
paquete necesario para interconectar 'Python' y 'MySQL'.
Desde la línea de comandos ejecutamos el programa pip con el siguiente
paquete a instalar:
pip install mysql-connector
8
Docente: Ing. Luis Jeancarlos Mendoza Asmat
IESTP CHOCOPE PROGRAMACION DISTRIBUIDA
Conexión con el servidor de MySQL.
Controlar que el "XAMPP Control Panel" se encuentre en ejecución el
servidor de MySQL:
El primer programa que implementaremos nos conectaremos con el servidor
de MySQL y mostraremos todas las bases de datos existentes (una de esas
debería ser bd1)
import mysql.connector
conexion1=mysql.connector.connect(host="localhost", user="root",
passwd="")
cursor1=conexion1.cursor()
cursor1.execute("show databases")
for base in cursor1:
print(base)
conexion1.close()
9
Docente: Ing. Luis Jeancarlos Mendoza Asmat
IESTP CHOCOPE PROGRAMACION DISTRIBUIDA
El resultado de ejecutar este programa es:
Lo primero que hacemos es importar el módulo que nos permite
conectarnos con MySQL:
import mysql.connector
Del módulo importado llamamos a la función connect pasando la ubicación
de nuestro servidor que es 'localhost', el usuario que por defecto al instalar
MySQL se creó el usuario 'root' y la clave de ese usuario que tiene por
defecto un string vacío:
conexion1=mysql.connector.connect(host="localhost", user="root",
passwd="")
Si por ejemplo el servidor de MySQL no se encuentra en ejecución el
programa se detendrá en esta línea informando un error.
Luego a partir del objeto 'conexion1' que es de la clase 'MySQLConnection'
llamamos al método 'cursor':
cursor1=conexion1.cursor()
A partir del objeto 'cursor1' llamamos al método execute y le pasamos como
parámetro un comando SQL, en este caso 'show databases':
cursor1.execute("show databases")
10
Docente: Ing. Luis Jeancarlos Mendoza Asmat
IESTP CHOCOPE PROGRAMACION DISTRIBUIDA
Mediante un for podemos ver todas las bases de datos existentes en
nuestro servidor de MySQL:
for base in cursor1:
print(base)
Finalmente cerramos la conexión con el servidor de MySQL:
conexion1.close()
Listado de todas las tablas de una base de datos de
MySQL.
Ahora implementaremos un programa que recupere todas las tablas
contenidos en una base de datos. Trabajaremos con la base de datos que
creamos desde el PHPMyAdmin llamada 'bd1'.
import mysql.connector
conexion1=mysql.connector.connect(host="localhost",
user="root",
passwd="",
database="bd1")
cursor1=conexion1.cursor()
cursor1.execute("show tables")
for tabla in cursor1:
print(tabla)
conexion1.close()
El resultado de ejecutar este programa es:
11
Docente: Ing. Luis Jeancarlos Mendoza Asmat
IESTP CHOCOPE PROGRAMACION DISTRIBUIDA
Cuando nos conectamos con el servidor de MySQL indicamos en 'database'
la base de datos activa para cuando lancemos comandos SQL:
conexion1=mysql.connector.connect(host="localhost",
user="root",
passwd="",
database="bd1")
Luego de crear el cursor solicitamos que se ejecute el comando SQL 'show
tables' que nos retorna todas las tablas existentes de la base de datos
activa indicada cuando llamamos a 'connect':
cursor1=conexion1.cursor()
cursor1.execute("show tables")
Imprimimos con un for todas las tablas y cerramos la conexión:
for tabla in cursor1:
print(tabla)
conexion1.close()
Insertar filas en una tabla.
Ahora implementaremos un programa que inserte un par de filas en la tabla
'articulos'.
import mysql.connector
conexion1=mysql.connector.connect(host="localhost",
user="root",
passwd="",
database="bd1")
cursor1=conexion1.cursor()
sql="insert into articulos(descripcion, precio) values (%s,%s)"
datos=("naranjas", 23.50)
cursor1.execute(sql, datos)
datos=("peras", 34)
cursor1.execute(sql, datos)
datos=("bananas", 25)
cursor1.execute(sql, datos)
conexion1.commit()
conexion1.close()
12
Docente: Ing. Luis Jeancarlos Mendoza Asmat
IESTP CHOCOPE PROGRAMACION DISTRIBUIDA
Por el momento si queremos controlar que se han cargado las tres filas en
la tabla 'articulos' podemos abrir el 'PHPMyAdmin' y ver el contenido de la
tabla:
Definimos un string con el comando SQL insert disponiendo la máscara %s
donde queremos que se sustituya por un valor que le pasaremos al método
execute:
sql="insert into articulos(descripcion, precio) values (%s,%s)"
La variable datos es una tupla que contiene los datos que se utilizarán en la
sustitución %s:
datos=("naranjas", 23.50)
Finalmente llamamos al método 'execute' y le pasamos las dos variables
que acabamos de crear:
cursor1.execute(sql, datos)
Es fundamental llamar al final al método 'commit' para que queden firmes
los comandos SQL 'insert':
conexion1.commit()
Recuperar todas las filas de una tabla.
Implementaremos un programa que solicite ejecutar un 'select' en la tabla
'articulos' y nos retorne todas sus filas.
13
Docente: Ing. Luis Jeancarlos Mendoza Asmat
IESTP CHOCOPE PROGRAMACION DISTRIBUIDA
import mysql.connector
conexion1=mysql.connector.connect(host="localhost",
user="root",
passwd="",
database="bd1")
cursor1=conexion1.cursor()
cursor1.execute("select codigo, descripcion, precio from articulos")
for fila in cursor1:
print(fila)
conexion1.close()
Cuando ejecutamos el programa podemos ver que se recuperan todas las
filas de la tabla 'articulo
Luego de conectarnos y crear un cursor procedemos a ejecutar el comando
'select', recorremos con un for el 'cursor1':
cursor1=conexion1.cursor()
cursor1.execute("select codigo, descripcion, precio from articulos")
for fila in cursor1:
print(fila)
Borrado y modificación de filas.
Las otras dos actividades fundamentales que podemos hacer con una tabla
es borrar filas y modificar datos.
Desarrollaremos un pequeño programa que borre el artículo cuyo código
sea el 1 y modifique el precio del artículo cuyo código sea 3.
import mysql.connector
conexion1=mysql.connector.connect(host="localhost",
14
Docente: Ing. Luis Jeancarlos Mendoza Asmat
IESTP CHOCOPE PROGRAMACION DISTRIBUIDA
user="root",
passwd="",
database="bd1")
cursor1=conexion1.cursor()
cursor1.execute("delete from articulos where codigo=1")
cursor1.execute("update articulos set precio=50 where codigo=3")
conexion1.commit()
cursor1.execute("select codigo, descripcion, precio from articulos")
for fila in cursor1:
print(fila)
conexion1.close()
Cuando ejecutamos el programa podemos ver que se eliminó el artículo
cuyo código es 1 y se modificó el precio del artículo con código 3:
Luego de crear el cursor podemos llamar al método 'execute' varias veces y
pasar distintos comando SQL:
cursor1=conexion1.cursor()
cursor1.execute("delete from articulos where codigo=1")
cursor1.execute("update articulos set precio=50 where codigo=3")
Siempre que pasemos un comando SQL: insert, delete o update debemos
llamar al método commit para que quede firme los cambios en la base de
datos:
conexion1.commit()
Ejecutamos finalmente un 'select' para comprobar los cambios efectuados
en la tabla 'articulos':
cursor1.execute("select codigo, descripcion, precio from articulos")
for fila in cursor1:
print(fila)
15
Docente: Ing. Luis Jeancarlos Mendoza Asmat