Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

[Dúvida] Resolvendo o DESAFIO

Estava resolvendo o desafio como sempre, e quando vi que meu código não efetuou as alterções desajadas.

import sqlalchemy 
import pandas as pd
url = 'https://raw.githubusercontent.com/alura-cursos/Pandas/main/clientes_banco.csv'
dados = pd.read_csv(url)
from sqlalchemy import text
query = 'UPDATE clientes SET Rendimento_anual = "300000" WHERE ID_Cliente = 6840104'
query = 'DELETE FROM clientes WHERE ID_Cliente = 5008809'
query = '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, "Empregrado", "TI", 2, 290000, 0, "Casa/apartamento próprio")'
with engine.connect() as conn:
    conn.execute(text(query))
    conn.commit()
dados

Insira aqui a descrição dessa imagem para ajudar na acessibilidade Insira aqui a descrição dessa imagem para ajudar na acessibilidade

1 resposta
solução!

Olá, Alison! Tudo bem?

Agradeço por aguardar o nosso retorno.

O problema pode estar relacionado à forma como as queries SQL estão sendo executadas. Por exemplo, quando você faz query = 'UPDATE...', depois query = 'DELETE...', e por fim query = 'INSERT...', só a última fica guardada na variável query. Seguindo então, no conn.execute(text(query)), só o INSERT é executado — o UPDATE e o DELETE são perdidos.

Além disso, no final, você mostra o DataFrame original dados do CSV, que não reflete as mudanças feitas no banco.

Sendo assim, segue um exemplo para que seja aplicado as mudanças:

1 - Importar bibliotecas e criar o objeto engine

import sqlalchemy
from sqlalchemy import create_engine, MetaData, Table, inspect
engine = create_engine('sqlite:///:memory:')

2- Leitura dos dados

import pandas as pd
url = 'https://raw.githubusercontent.com/alura-cursos/Pandas/main/clientes_banco.csv'
dados = pd.read_csv(url)
dados.to_sql('clientes', engine, index=False)

3 - Obtendo o dataframe

pd.read_sql_table('clientes', engine)

4- Importação sqlalchemy

from sqlalchemy import text

5 - Atualização dos registros

query = 'UPDATE Clientes SET Rendimento_anual=300000.0 WHERE ID_Cliente=6840104' 
with engine.connect() as conn:
  result = conn.execute(text(query))
  conn.commit()
query = 'DELETE FROM clientes WHERE ID_Cliente=5008809'
with engine.connect() as conn:
  result = conn.execute(text(query))
  conn.commit()

6 - Criando o novo reigistro

query = '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:
  result = conn.execute(text(query))
  conn.commit()

7 - Exibindo o dataframe com as modificações feitas

pd.read_sql_table('clientes', engine)

Segue o link do notebook usado para teste: https://colab.research.google.com/drive/13OCG9ceH-vXI12KbBrqJ_z_s8xXPKZw5?usp=sharing

Espero ter ajudado, conte sempre conosco para te auxiliar.

Até mais, Alison!

Caso este post tenha lhe ajudado, por favor, marcar como solucionado!