Enunciado y solución de ejercicios resueltos en Python: acceso base de datos SQLite. Se incluye la descarga del código fuente completo de los ejercicios en Python. Se pedirá que se desarrolle un programa Python que cree una base de datos SQLite, una tabla, inserciones de registros en la tabla leyendo de un fichero CSV y consultas SQL.
- Ejercicio resuelto Python 1: acceso a base de datos SQLite.
- Descarga del fichero Python con el ejercicio resuelto.
Ejercicio resuelto Python: acceso a base de datos SQLite
Enunciado del ejercicio Python con acceso a base de datos SQL SLite
Realizar un programa Python que realice las siguientes funciones:
- Crear una base de datos SQLite, guardándola en la carpeta de ejecución del script, con el nombre bd_sqlite.db.
- Crear una tabla llamada clientes en esta base de datos, con los siguientes campos:
- dni: de tipo varchar.
- nombre: de tipo varchar.
- telefono: de tipo varchar.
- Una vez creada la tabla, leeremos el contenido del fichero datos_clientes.csv, que puede ser algo así:
1 2 3 4 5 6 |
DNI Nombre Teléfono 334455S Alonso 88998899 223343F Juan 33433233 322534G Pedro 33433433 112938X Vicente 33232312 444312M Lucas 43433332 |
- Y pasaremos cada línea del fichero a un registro de la base de datos bd_sqlite.db en la tabla clientes.
- Por último, para verificar que los registros se han insertado, haremos un SELECT sobre la tabla clientes y mostraremos todos los registros por pantalla.
Mostrar por pantalla los pasos realizados y su resultado. Por ejemplo:
- Base de datos bd_sqlite.db creada correctamente.
- Tabla clientes creada correctamente.
- Leyendo contenido del fichero datos_clientes.csv…
- Insertado registro x de x correctamente → Una línea con este texto por cada registro que se inserte, incrementando el número.
- Se han insertado correctamente x registros en la tabla clientes.
- Mostrando registros de la tabla SQLite…
- Y mostramos todos los registros (uno en cada línea) por pantalla.
Solución del ejercicio en Python
La solución propuesta al ejercicio, como ejemplo de acceso a base de datos SQLite en Python (creación de base de datos, creación de tabla, lectura de fichero CSV, inserción de registros en tabla y selección de registros para mostrarlos por pantalla), podría ser:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 |
import sqlite3 # Ruta y nombre de la Base de datos SQLite rutaBD = r"D:\Mis documentos\ProyectoA\Python\ProyectoA_SQLite\bd_sqlite.db" try: with sqlite3.connect(rutaBD) as conBD: print(f"Base de datos {rutaBD} creada correctamente.") cursorBD = conBD.cursor() # Creamos la tabla clientes sql = """CREATE TABLE IF NOT EXISTS clientes ( dni varchar(20), nombre varchar(15), telefono varchar(20) );""" cursorBD.execute(sql) conBD.commit() print("Tabla clientes creada correctamente") # Leemos el contenido del fichero clientes.csv y lo pasamos # a la base de datos, a la tabla clientes print("Leyendo contenido del fichero datos_clientes.txt...") ficheroCSV = open(r"D:\Mis documentos\ProyectoA\Python\ProyectoA_SQLite\datos_clientes.csv") lineasFichero = ficheroCSV.readlines() numLines = len(lineasFichero) for i in range(numLines - 1): # Obtenemos los datos del fichero de texto CSV (las columnas van separadas por tabulador) dni = str(lineasFichero[i + 1].split("\t")[0]) nombre = lineasFichero[i + 1].split("\t")[1] telefono = lineasFichero[i + 1].split("\t")[2] registro = f"'{dni}', '{nombre}', '{telefono}'" # Guardamos los datos en un registro de la tabla Tabla2 de la BD SQLite cursorBD.execute(f"INSERT INTO clientes (dni, nombre, telefono) VALUES ({registro})") print(f"Insertado registro {i+1} de {numLines-1} correctamente") # Aplicamos los cambios en la BD conBD.commit() print (f"Se han insertado correctamente {str(i + 1)} registros en la tabla clientes") print("Mostrando registros de la tabla SQLite...") # Ejecutamos la consulta SQL de SELECT para mostrar los registros de la tabla clientes sql = "select * from clientes" cursorBD.execute(sql) resultadoSQL = cursorBD.fetchall() for i in range(len(resultadoSQL)): print (resultadoSQL[i]) except sqlite3.OperationalError as e: print("Error al trabajar con la BD SQLite:", e) |
Ejemplo de ejecución del ejercicio en Python
La compilación del ejercicio dará como resultado:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
Base de datos D:\Mis documentos\ProyectoA\Python\ProyectoA_SQLite\bd_sqlite.db creada correctamente. Tabla clientes creada correctamente Leyendo contenido del fichero datos_clientes.txt... Insertado registro 1 de 5 correctamente Insertado registro 2 de 5 correctamente Insertado registro 3 de 5 correctamente Insertado registro 4 de 5 correctamente Insertado registro 5 de 5 correctamente Se han insertado correctamente 5 registros en la tabla clientes Mostrando registros de la tabla SQLite... ('334455S', 'Alonso', '88998899\n') ('223343F', 'Juan', '33433233\n') ('322534G', 'Pedro', '33433433\n') ('112938X', 'Vicente', '33232312\n') ('444312M', 'Lucas', '43433332') ('334455S', 'Alonso', '88998899\n') ('223343F', 'Juan', '33433233\n') ('322534G', 'Pedro', '33433433\n') ('112938X', 'Vicente', '33232312\n') ('444312M', 'Lucas', '43433332') |
Descarga del fichero Python con el ejercicio resuelto
En el siguiente enlace os proporcionamos la descarga del código fuente completo en Python con la solución del ejercicio propuesto: