Ya estoy inscrito ¿Todavía no tienes acceso? Nuestros Planes
Ya estoy inscrito ¿Todavía no tienes acceso? Nuestros Planes
1
respuesta

[Proyecto ] **CHALLENGE** Lectura de base de datos con Pandas

Propongo una solucion al desafio propuesto


#Importo todas las librerias
import pandas as pd
import sqlalchemy
from sqlalchemy import create_engine, MetaData, Table, inspect, text
from sqlalchemy.exc import SQLAlchemyError

#Paso de CSV a SQL
engine = create_engine('sqlite:///:memory:')
inspector = inspect(engine)

datos = pd.read_csv('/content/clientes_banco.csv')
datos.to_sql('tabla',engine,index=False)
pd.read_sql_table('tabla', con = engine.connect())

#Actualiza el rendimiento anual al cliente en la base de datos
query = 'UPDATE tabla SET Rendimiento_anual = 30000 WHERE ID_Cliente = 6840104'
try: 
  r_set = engine.connect().execute(text(query))
except SQLAlchemyError as e:
  print(e)
else:
  print("Registro actualizado", r_set.rowcount)

pd.read_sql_table('tabla', con = engine.connect())
 #Elimina el cliente de la base de datos
query = 'DELETE FROM tabla WHERE ID_Cliente = 5008809 '
try: 
  r_set = engine.connect().execute(text(query))
except SQLAlchemyError as e:
  print(e)
else:
  print("Registro Eliminado", r_set.rowcount)

pd.read_sql_table('tabla', con = engine.connect())
#Ingresa a otro cliente con todos sus atributos en la base de datos
query = 'INSERT INTO tabla ("ID_cliente" ,"Edad", "Grado_estudio" , "Estado_civil", "Tamaño_familia" , "Categoria_de_renta" , "Ocupacion" , "Años_empleado", "Rendimiento_anual" , "Tiene_carro" , "Vivienda")' \
'Values (6850985, 33,"Doctorado","Soltero",1,"Empleado","TI",2,290000,0,"Casa/Departamento propio")'
try: 
  r_set = engine.connect().execute(text(query))
except SQLAlchemyError as e:
  print(e)
else:
  print("Registro Insertado: ", r_set.rowcount)

pd.read_sql_table('tabla', con = engine.connect())
1 respuesta

¡Hola Estudiante, espero que estés bien!

Parece que has hecho un buen trabajo al abordar el desafío propuesto. Vamos a revisar tu solución y asegurarnos de que todo esté correcto.

  1. Creación de la base de datos local: Has utilizado create_engine('sqlite:///:memory:') para crear una base de datos en memoria, lo cual es perfecto para pruebas y desarrollo. Si deseas una base de datos persistente, podrías cambiar a un archivo SQLite, por ejemplo, sqlite:///clientes.db.

  2. Escritura de datos desde CSV a SQL: Has utilizado pd.read_csv() para leer el archivo CSV y luego to_sql() para escribir los datos en la base de datos, lo cual es correcto.

  3. Actualizaciones en la base de datos:

    • Actualización del rendimiento anual: Tu consulta SQL parece correcta, pero asegúrate de que el valor actualizado sea 300000 en lugar de 30000, como se especifica en el desafío.
    • Eliminación del cliente: La consulta para eliminar el cliente con ID_Cliente = 5008809 también es correcta.
    • Inserción de un nuevo cliente: La consulta INSERT INTO que has utilizado parece estar bien estructurada. Solo asegúrate de que los nombres de las columnas coincidan exactamente con los de tu tabla.

Un pequeño consejo: después de cada operación, es útil mostrar los datos de la tabla para verificar visualmente que las operaciones se realizaron correctamente. Puedes hacerlo con pd.read_sql_table('tabla', con=engine.connect()).

Espero que esta revisión te sea útil y te ayude a completar el desafío con éxito. ¡Bons estudios!