Crear la base de datos local con la biblioteca SQLAlchemy.
# Importamos la biblioteca
import sqlalchemy
from sqlalchemy import create_engine, MetaData, Table, inspect, text
from sqlalchemy.exc import SQLAlchemyError
engine = create_engine('sqlite:///:memory:')
import pandas as pd
archivo_clientes = '/content/drive/MyDrive/Pandas_2/banco_de_datos/clientes_banco.csv'
# Se almacena en una variable tipo DataFrame que recibe todos los registros guardados
# Es importante pasar los datos a un DataFrame antes de enviarlos a SQL
datos_clientes = pd.read_csv(archivo_clientes)
Escribir los datos del archivo CSV en esta base de datos local.
# Exporta los registros o el archivo a una tabla sql - muestra la cantidad de registros.
datos_clientes.to_sql('clientes',engine,index=False)
# Para obtener el DataFrame
pd.read_sql_table('clientes', con =engine.connect())
# Revisa todo lo que hay dentro del motor engine y lo almacena en la variable 'inspector'
inspector = inspect(engine)
# Devuelve una lista con los nombres de todas las tablas que existen en la base de datos actualmente conectada con SQLAlchemy.
print(inspector.get_table_names())
Realizar tres actualizaciones en la base de datos:
Actualizar el registro del cliente
query = 'UPDATE clientes SET Rendimiento_anual=300000 WHERE ID_Cliente=6840104 '
try:
r_set = engine.connect().execute(text(query))
except SQLAlchemyError as e:
print(e)
else:
print('#Registros actualizados: ',r_set.rowcount)
# Confirmar que se haya actualizado el registro
pd.read_sql_table('clientes', con =engine.connect())
Eliminar el registro de cliente
query = 'DELETE FROM clientes WHERE ID_Cliente=5008809 '
try:
r_set = engine.connect().execute(text(query))
except SQLAlchemyError as e:
print(e)
else:
print('#Registros eliminados: ',r_set.rowcount)
# Confirmar que se haya eliminado el registro
pd.read_sql_table('clientes', con =engine.connect())
Crear un nuevo registro de cliente
query = 'INSERT INTO clientes ("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('#Registros creados: ',r_set.rowcount)
# Confirmar que se haya creado el registro
pd.read_sql_table('clientes', con =engine.connect())
# Devuelve una lista con los nombres de todas las tablas que existen en la base de datos actualmente conectada con SQLAlchemy.
print(inspector.get_table_names())