Ejecución de SQL sin formato en Flask-SQLAlchemy
Al trabajar con Flask-SQLAlchemy, puede encontrarse con un escenario en el que necesite ejecutar SQL sin formato consultas. Estas consultas podrían implicar uniones de tablas complejas o vistas en línea. El enfoque inicial demostrado en la pregunta usando connect.execute() puede provocar errores de puerta de enlace. Para abordar este problema, exploremos los enfoques recomendados en las versiones 1.x y 2.0 de SQLAlchemy.
SQLAlchemy 2.0
Para ejecutar SQL sin formato en SQLAlchemy 2.0, puede aprovechar el método motor.connect():
with engine.connect() as connection:
result = connection.execute(text('SELECT * FROM your_table'))
# Perform operations on the result
Al utilizar el administrador de contexto motor.connect(), se asegura de que la conexión se establezca y se cierre automáticamente al salir del contexto.
SQLAlchemy 1. x
En SQLAlchemy 1.x, puede ejecutar SQL sin formato usando el método db.engine.execute() junto con la función 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)
Tenga en cuenta que el método db.engine.execute() ejecuta consultas "sin conexión", lo que significa que no establece una sesión de base de datos. Este método está obsoleto en SQLAlchemy 2.0 y debe evitarse por motivos de coherencia y mejores prácticas.
Descargo de responsabilidad: Todos los recursos proporcionados provienen en parte de Internet. Si existe alguna infracción de sus derechos de autor u otros derechos e intereses, explique los motivos detallados y proporcione pruebas de los derechos de autor o derechos e intereses y luego envíelos al correo electrónico: [email protected]. Lo manejaremos por usted lo antes posible.
Copyright© 2022 湘ICP备2022001581号-3