1
resposta

[Dúvida] Como eu fiz

import pandas as pd
from sqlalchemy import create_engine, text

# URL do CSV
url = 'https://raw.githubusercontent.com/alura-cursos/Pandas/main/clientes_banco.csv'

# Criar banco em memória
engine = create_engine('sqlite:///:memory:')

# Ler CSV
clientes_banco = pd.read_csv(url)

# Enviar para o banco
clientes_banco.to_sql('clientes', engine, index=False, if_exists='replace')

# Visualizar dados
pd.read_sql('SELECT * FROM clientes', engine)

# UPDATE
query_update = text("""
UPDATE clientes 
SET Rendimento_anual = 300000 
WHERE ID_Cliente = 6840104
""")

with engine.connect() as conn:
    conexao.execute(query_update)
    conexao.commit()

pd.read_sql('SELECT * FROM clientes WHERE ID_Cliente = 6840104', engine)

# DELETE
query_delete = text("""
DELETE FROM clientes 
WHERE ID_Cliente = 5008809
""")

with engine.connect() as conn:
    conn.execute(query_delete)
    conn.commit()

pd.read_sql('SELECT * FROM clientes WHERE ID_Cliente = 5008809', engine)

# INSERT
query_insert = text("""
INSERT INTO clientes (
    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'
)
""")

with engine.connect() as conn:
    conn.execute(query_insert)
    conn.commit()

pd.read_sql('SELECT * FROM clientes WHERE ID_Cliente = 6850985', engine)
1 resposta

Oi, Vitor! Como vai?

Agradeço por compartilhar seu código com a comunidade Alura.

Gostei bastante da forma como você estruturou todo o fluxo, desde a leitura do CSV até as operações de UPDATE, DELETE e INSERT no banco em memória. Isso mostra que você entendeu bem a integração entre pandas e SQLAlchemy. Continue assim!

Uma dica interessante para o futuro é utilizar o metodo loc do pandas para fazer atualizacoes diretamente no DataFrame antes de enviar ao banco, o que pode facilitar testes rapidos:


import pandas as pd

df = pd.read_csv('dados.csv')

df.loc[df['id_cliente'] == 6840104, 'rendimento_anual'] = 300000

print(df.head())

Esse codigo atualiza um valor diretamente no DataFrame filtrando pela condicao, o que pode ser util antes de persistir os dados no banco.

Qualquer dúvida que surgir, compartilhe no fórum. Abraços e bons estudos!

Para saber mais:

Sugestão de conteúdo:

DOCUMENTAÇÃO
pandas.DataFrame.loc
Alura Conte com o apoio da comunidade Alura na sua jornada. Abraços e bons estudos!