Programación en Python Manuel Castaño Guillén
A.S.I.R. on-line IES Suárez de Figueroa
Actividad: Consulta a una base de datos SQLite con Python. Mostrar todos los registros de una
tabla
Para trabajar con SQLite lo primero que haremos es instalar la extensión SQLite3 editor en VS
Code, añadimos un nuevo fichero con extensión .db: [Link] y dentro de esa base de datos
vamos a crear una tabla llamada alumnos con los campos que se muestran a continuación y para
finalizar hacemos clic en Confirmar:
Introducimos unos cuantos registros en la tabla para hacer pruebas:
El código Python para mostrar los registros de una tabla consiste en importar la librería sqlite3,
conectar a la base de datos (la base de datos y el programa están en la misma carpeta) creando
un objeto Connection: conexion, ejecutamos la orden SQL (select * from alumnos recupera todos
los campos de la tabla alumnos) y en el objeto Cursor registros habrá una lista los registros
devueltos, ya solamente tenemos que hacer un bucle que muestre uno a uno los registros:
import sqlite3
conexion = [Link]("[Link]")
registros = [Link]("select * from alumnos")
for fila in registros:
print(fila)
[Link]()
Actividad: Crear una aplicación CRUD con SQLite y Python con la tabla alumnos.
En informática, CRUD es el acrónimo de "Crear, Leer, Actualizar y Borrar" (del original en inglés:
Create, Read, Update and Delete), es decir, hacer todas las operaciones básicas sobre una tabla.
Vamos a empezar creando un menú de opciones. Para ello creamos una función que muestre el
menú y será llamada una y otra vez hasta que el usuario elija la opción de salir del programa.
Utilizamos el comando cls o clear del sistema operativo para borrar la pantalla (hay que importar
el módulo “os” que es el que permite trabajar con comandos del sistema).
Cada vez que el usuario elija una opción se comprueba que está dentro de las opciones válidas,
si no es así se muestra un mensaje y se hace una pausa de 3 segundos para evitar un nuevo
borrado al instante, para ello usamos la función [Link](segundos) lo cual obliga a importar el
módulo “time”.
Dentro de cada opción habrá una llamada a una función, de momento usamos pass mientras
programamos y hacemos funcionar correctamente el menú.
1
Programación en Python Manuel Castaño Guillén
A.S.I.R. on-line IES Suárez de Figueroa
import os
import time
def mostrar_menu():
# para linux clear, para windows cls
[Link]("cls")
print("""
-------------------------------------------
APLICACION ALUMNOS
-------------------------------------------
1.- Listado de alumnos
2.- Nuevo alumno
3.- Borrar alumno
4.- Editar alumno
5.- Salir
""")
opcion = 0
while opcion != 5:
mostrar_menu()
try:
opcion = int(input("Elija una opción:"))
if opcion == 1:
pass
elif opcion == 2:
pass
elif opcion == 3:
pass
elif opcion == 4:
pass
elif opcion == 5:
pass
else:
print("Opción inexistente. Vuelva a intentarlo")
[Link](3)
except Exception:
print("Debe indicar un número de 1 a 5")
[Link](3)
Mejoramos la función listado:
borramos pantalla [Link]("cls")
imprimimos una cabeceras antes de los datos print("Ex. Nombre Pres. Online FCT")
controlamos excepciones por si hay problemas al leer los datos try - except
damos formato a los campos haciendo que tengan un ancho fijo d –para enteros– s –
para cadenas–, de forma que {3:2d} significa tercer dato con 2 posiciones enteras.
hacemos una pausa leyendo un dato ficticio para que el usuario vea el listado antes de
borrar de nuevo la pantalla. input("Pulse intro para continuar")
def consultar():
try:
[Link]("cls")
conexion = [Link]("[Link]")
registros = [Link]("select * from alumnos")
print("Ex. Nombre
2
Programación en Python Manuel Castaño Guillén
A.S.I.R. on-line IES Suárez de Figueroa
Pres. Online FCT")
print("---------------------------------------------")
for fila in registros:
print("{0:2d}{1:<30}{2:<2}{3:<2}{4:<1}".format(
fila[0], fila[1], fila[2], fila[3], fila[4]))
print("")
input("Pulse intro para continuar")
[Link]()
except Exception as exp:
print(exp)
La función nuevo al igual que la de consulta lo ideal es usar control de excepciones porque
además de darse problema de apertura de base de datos se pueden producir errores al introducir
los datos o al almacenarlos en la base de datos.
Esta función solicita los datos de cada alumno, en el caso de los datos tipo texto se pasan a
mayúsculas con “upper”, en el caso de los datos numéricos los mantenemos en tipo texto (que
retorna el input) puesto que al final los tenemos que incrustar en la orden SQL “insert” que no
es más que una cadena de texto que ejecuta nuestra base de datos. Podríamos haber construido
la orden insert concatenando orden con datos tecleados pero es más tedioso puesto que hay que
usar comillas simples y dobles en las concatenaciones. Usamos una solución que ofrece Python
que permite introducir en un diccionario los datos tecleados y pasarlos como un parámetro como
se muestra.
Esta orden necesita un commit que es el que realiza el guardado de datos en la base de datos.
def nuevo():
try:
expediente = input("Introduzca número de expediente:")
nombre = input("Indique nombre:").upper()
n1 = input("Indique nota presencial:")
n2 = input("Indique nota online:")
n3 = input("Indique nota formacion empresas (A,E,N):").upper()
conexion = [Link]("[Link]")
ordensql = """insert into alumnos
(expediente,nombre, nota_presencial, nota_online, nota_empresa)
values
(:expediente,:nombre,:n1,:n2,:n3)"""
datos = {"expediente": expediente,
"nombre": nombre, "n1": n1, "n2": n2, "n3": n3}
[Link](ordensql, datos)
[Link]()
[Link]()
except Exception as exp:
print(exp)
Creamos la función borrar solicitando el número de expediente, en este caso construimos la orden
SQL directamente concatenando con el expediente. La ejecución de la orden devuelve un cursor
(borrados) cuyo atributo rowcount nos informa de los registros borrados (podríamos poner otro
mensaje más elaborado si es 0 indicando que no se ha borrado nada en vez “se han b…”). Para
finalizar como es una orden de modificación de los datos es necesario ejecutar commit y siempre
cerrar la conexión.
def borrar():
try:
expediente = input("Introduzca número de expediente a borrar:")
conexion = [Link]("[Link]")
ordensql = "delete from alumnos where expediente ="+expediente
borrados = [Link](ordensql)
print("Se han borrado:", [Link], "registros")
input("Pulse intro para continuar")
[Link]()
[Link]()
except Exception as exp:
print(exp)
3
Programación en Python Manuel Castaño Guillén
A.S.I.R. on-line IES Suárez de Figueroa
La última función es actualizar, solicitará los nuevos datos y los actualizará mediante una orden
SQL update. Aquí se usa otra técnica para pasar los valores, se pone ? en medio de la orden
donde van los datos y después se pasa una lista con los datos (Ojo en el mismo orden).
def actualizar():
try:
expediente = input("Introduzca número de expediente:")
nombre = input("Indique nombre:").upper()
n1 = input("Indique nota presencial:")
n2 = input("Indique nota online:")
n3 = input("Indique nota formacion empresas (A,E,N):").upper()
conexion = [Link]("[Link]")
[Link]("update alumnos set " +
"nombre = ?, nota_presencial = ?," +
"nota_online = ?, nota_empresa =? " +
"where expediente=? ",
(nombre, n1, n2, n3, expediente))
[Link]()
[Link]()
except Exception as exp:
print(exp)
Actividad: Trabajar con Numpy
Lo primero que tenemos que hacer es instalar numpy con “pip install numpy” y en nuestro fichero
.py debemos importar la librería.
Un primer ejemplo sencillo: Mostrar un array por pantalla:
import numpy as np
a = [Link]([1, 2, 3])
print(a)
Actividad: Crear arrays
Como se mencionó en la teoría hay varias formas de crear ndarrays:
import numpy as np
# array desde listas:
a = [Link]([1, 2, 3])
print(a)
# array desde funciones de Numpy:
# zeros crea un array todo a ceros del tamaño indicado
ceros = [Link](5)
print(ceros)
# ones crea un array todo a unos del tamaño indicado
unos = [Link](5)
print(unos)
# full crea un array todo al número indicado
ochos = [Link](4,8)
print(ochos)
# arange crea un array con inicio, fin y salto
pareshasta10 = [Link](0, 10, 2)
print(pareshasta10)
Actividad: Operando con arrays
Numpy permite hacer fácilmente muchas operaciones con los arrays:
import numpy as np
a = [Link]([1, 2, 3])
b = [Link](3)
# Sumar, multiplicar, ... un número por un array
doble = a*2
print(doble)
# Sumar, multiplicar ... dos arrays
suma = a+b
print(suma)
# cuadrados
print(suma*suma)
4
Programación en Python Manuel Castaño Guillén
A.S.I.R. on-line IES Suárez de Figueroa
Actividad: Funciones
Además hay muchas funciones para procesar los arrays, algunas de ellas:
import numpy as np
a = [Link]([5, 7, 3])
# suma de los elementos de a
total = [Link](a)
print(total)
# mayor de los elementos de a
maximo = [Link](a)
print(maximo)
# lugar que ocupa el máximo de los elementos de a (0
es el primer lugar)
lugar = [Link](a)
print(lugar)
# media de los valores de a
media = [Link](a)
print(media)
# array ordenado de menor a mayor
ordenado = [Link](a)
print(ordenado)
Actividad: Slicing
En el siguiente ejemplo se muestran varios ejemplos de slicing en Python:
import numpy as np
a = [Link]([5, 7, 3, 6, 6, 7, 0, 5, 8, 9, 0,
10, 1, 2, 3, 3, 5, 5, 7])
# mostrar las posiciones tercera a quinta, ambas
incluidas como se empieza en 0, la posición 2 es
la tercera
print(a[2:5])
# mostrar las posiciones séptima a final
print(a[6:])
# mostrar las posiciones impares, 0 es la
primera, en blanco el final para que salgan todas
y de 2 en 2.
print(a[0::2])
# poner a 0 las posiciones decima a final
a[9:] = 0
print(a)
Actividad: Indexación booleana
A continuación se muestran ejemplos del uso de la indexación booleana:
import numpy as np
# Array con nombres de trabajadores:
t = [Link](["Elena", "Juan", "Rosa", "Rodrigo",
"Luisa", "María", "Blanca",
"Laura"])
# Array con los salarios de esos trabajadores:
s = [Link]([1000, 1200, 3000, 1100, 1900, 2500,
1750, 1200])
# Array con la edad
e = [Link]([30, 52, 26, 38, 57, 39, 33, 29])
# Lista de trabajadores con salario mayor a 1200
# por partes: establecer que elementos cumplen la
condición, mostrar array booleano y mostrar
nombres:
booleano_sueldos = s > 1200
print(booleano_sueldos)
print(t[booleano_sueldos])
# o mostrarlo directamente:
print(t[s > 1200])
# Lista de trabajadores mayores de 30 y que ganen
más de 1200
print(t[(s > 1200) & (e > 30)])
5
Programación en Python Manuel Castaño Guillén
A.S.I.R. on-line IES Suárez de Figueroa
Actividad: Gráficos con matplotlib
Por último, vamos a ver ejemplos de gráficos realizados con matplotlib.
import numpy as np
import [Link] as plt
t = [Link](["Elena", "Juan", "Rosa",
"Rodrigo",
"Luisa", "María", "Blanca",
"Laura"])
s = [Link]([1000, 1200, 3000, 1100, 1900,
2500, 1750, 1200])
e = [Link]([30, 52, 26, 38, 57, 39, 33, 29])
[Link](s, labels=t)
[Link]()
Cambiando gráfico a [Link](t,s)
Cambiando a [Link](e,color="green")