1
resposta

[Sugestão] Deletando no banco de dados com o JupyterNotebook

Pessoal, estava com algumas dificuldades em realizar os exercícios pois estou utilizando o JupyterNotebook, e precisei utilizar a versão mais atualizada do sqlalchemy. Por causa disto, no final dos exercícios tive alguns problemas que precisei ir pesquisar um pouco mais

Na parte onde precisamos deletar o ID_Cliente eu estava tendo o seguinte erro:

ObjectNotExecutableError: Not an executable object: 'DELETE FROM clientes WHERE ID_Cliente=5008804'

Para solucionar foi preciso apenas importar o text no sqlalchemy:

from sqlalchemy import text
query = text('DELETE FROM clientes WHERE ID_Cliente=5008804')

Para solucionar a questão da tabela não estar atualizando depois de fazer o que foi proposto na aula, eu utilizei o código:

conn.commit()

Ficando com o código final desta maneira:

query = text('DELETE FROM clientes WHERE ID_Cliente=5008804')
with engine.connect() as conn:
    conn.execute(query)
    conn.commit()

Espero que tenha ajudado, caso alguém tenha ficado na mesma situação que eu!

1 resposta

Olá, Marcus Vinícius! Agradeço por compartilhar sua solução para o problema que você encontrou ao usar o Jupyter Notebook e o SQLAlchemy. Sua contribuição é muito valiosa e certamente ajudará outros alunos que possam estar enfrentando a mesma situação.

Apenas para esclarecer para quem possa estar lendo:

O erro ObjectNotExecutableError: Not an executable object ocorre quando você tenta executar uma string de consulta diretamente, sem convertê-la em um objeto executável. A função text do SQLAlchemy pode ser usada para converter a string de consulta em um objeto executável. O método commit é usado para salvar as alterações feitas na sessão atual do banco de dados. Se você não chamar commit, as alterações não serão salvas permanentemente no banco de dados. Portanto, a solução que você compartilhou é uma ótima maneira de resolver esses problemas. Obrigado novamente por compartilhar! Lembre-se de deixar como concluído seu tópico ou resolvido para obter alcance!