3
respostas

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

Tentei rodar o código da aula no colab e nesse ponto:

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

está retornando o seguinte erro:

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

Aparentemente ele entende que query = 'DELETE FROM clientes WHERE ID_Cliente=5008804' está recebendo um texto.

Como corrigir esse erro?

3 respostas

Olá Tibúrcio, tudo bem com você?

Nas versões atuais é para que o SQLAlchemy reconheça a consulta, precisamos passar o parâmetro query como o módulo text e não como strings simples. Segue abaixo o código corrigido:

from sqlalchemy import text

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

Além disso, é necessário utilizarmos a função commit() para a mudança ser aplicada.

Espero ter ajudado. Conte com o apoio do Fórum na sua jornada. Fico à disposição.

Abraços e bons estudos!

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

olá. minha situação é idêntica... entretanto, ao usar o código proposto pelo instrutor Rafael, o erro retorna da seguinte forma:

NameError                                 Traceback (most recent call last)
<ipython-input-39-5ac257351305> in <cell line: 2>()
      1 query = 'DELETE FROM clientes WHERE ID_Cliente=5008804'
      2 with engine.connect() as conn:
----> 3   conn.execute(text(query))
      4   conn.commit()

NameError: name 'text' is not defined

Boa tarde Andreh!

O erro NameError: name 'text' is not defined ocorre quando não fazemos a importação do objeto text. No seu código possui a linha abaixo?

from sqlalchemy import text

Caso não tenha, é necessário incluir. Para facilitar, deixo a seguir o código completo já com a importação:

from sqlalchemy import text

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

Fico à disposição.