1
resposta

Desafio Python + SQL

#Desafio: manipulando um banco de dados

#importando bibliotecas, classes, funções
import pandas as pd
import sqlalchemy
from sqlalchemy import create_engine, MetaData, Table, inspect, text

#criando um banco de dados do tipo sqlite, armazenar o banco na memória local
engine = create_engine('sqlite:///:memory:')

#url com a base de dados
url = 'https://raw.githubusercontent.com/alura-cursos/Pandas/main/clientes_banco.csv'

#criando um dataframe a partir do csv
clientes_banco = pd.read_csv(url)

#conferindo os dados importados
clientes_banco.head()

#criando a tabela clientes_banco
clientes_banco.to_sql('clientes_banco', engine, index = False)

#conferindo a tabela criada
pd.read_sql_table('clientes_banco', engine)

#criando as queries
query_1 = 'UPDATE clientes_banco SET Rendimento_anual = 300000 WHERE ID_Cliente = 6840104'
query_2 = 'DELETE FROM clientes_banco WHERE ID_Cliente = 5008809'
query_3 = 'INSERT INTO clientes_banco (ID_Cliente,Idade,Grau_escolaridade,Estado_civil,Tamanho_familia,\
          Categoria_de_renda,Ocupacao,Anos_empregado,Rendimento_anual,Tem_carro,Moradia) VALUES \
          (6850985, 33, "Doutorado", "Solteiro", 1, "Empregado", "TI", 2, 290000, 0, "Casa/apartamento próprio")'
          
#conferindo os dados antes de serem alterados
pd.read_sql_query('SELECT * FROM clientes_banco WHERE ID_Cliente = 6840104', engine)

#conferindo os dados antes de serem alterados
pd.read_sql_query('SELECT * FROM clientes_banco WHERE ID_Cliente = 5008809', engine)

#executando as queries
with engine.connect() as conn:
  conn.execute(text(query_1))
  conn.execute(text(query_2))
  conn.execute(text(query_3))
  conn.commit()
  
#conferindo os dados depois de serem alterados
pd.read_sql_query('SELECT * FROM clientes_banco WHERE ID_Cliente = 6840104', engine)

#conferindo os dados depois de serem alterados
pd.read_sql_query('SELECT * FROM clientes_banco WHERE ID_Cliente = 5008809', engine)

#conferindo os dados depois de serem alterados
pd.read_sql_table('clientes_banco', engine)
1 resposta

Ei! Tudo bem, Vinicius?

Mandou muito bem no desafio, parabéns!
A solução está correta e bem estruturada: você fez a leitura do CSV, criou o banco SQLite em memória, persistiu a tabela com to_sql e executou corretamente as operações de UPDATE, DELETE e INSERT usando o text() e o commit(), que é um ponto super importante com o SQLAlchemy.

Excelente trabalho, continue se dedicando e qualquer dúvida, compartilhe no fórum.

Alura Conte com o apoio da comunidade Alura na sua jornada. Abraços e bons estudos!