Executando SQL bruto no Flask-SQLAlchemy
Ao trabalhar com Flask-SQLAlchemy, você pode encontrar um cenário em que precisa executar SQL bruto consultas. Essas consultas podem envolver junções de tabelas complexas ou visualizações embutidas. A abordagem inicial demonstrada na pergunta usando connection.execute() pode desencadear erros de gateway. Para resolver esse problema, vamos explorar as abordagens recomendadas nas versões 1.xe 2.0 do SQLAlchemy.
SQLAlchemy 2.0
Para executar SQL bruto no SQLAlchemy 2.0, você pode aproveitar o método engine.connect():
with engine.connect() as connection:
result = connection.execute(text('SELECT * FROM your_table'))
# Perform operations on the result
Ao utilizar o gerenciador de contexto engine.connect(), você garante que a conexão seja estabelecida e fechada automaticamente ao sair do contexto.
SQLAlchemy 1. x
No SQLAlchemy 1.x, você pode executar SQL bruto usando o método db.engine.execute() em conjunto com a função text():
from sqlalchemy import text
sql = text('select name from penguins')
result = db.engine.execute(sql)
names = [row[0] for row in result]
print(names)
Observe que o método db.engine.execute() executa consultas "sem conexão", o que significa que não estabelece uma sessão de banco de dados. Este método está obsoleto no SQLAlchemy 2.0 e deve ser evitado para consistência e práticas recomendadas.
Isenção de responsabilidade: Todos os recursos fornecidos são parcialmente provenientes da Internet. Se houver qualquer violação de seus direitos autorais ou outros direitos e interesses, explique os motivos detalhados e forneça prova de direitos autorais ou direitos e interesses e envie-a para o e-mail: [email protected]. Nós cuidaremos disso para você o mais rápido possível.
Copyright© 2022 湘ICP备2022001581号-3