在 Flask-SQLAlchemy 中执行原始 SQL
在使用 Flask-SQLAlchemy 时,您可能会遇到需要执行原始 SQL 的场景查询。这些查询可能涉及复杂的表连接或内联视图。问题中演示的使用connection.execute() 的初始方法可能会触发网关错误。为了解决这个问题,让我们探索 SQLAlchemy 版本 1.x 和 2.0 中推荐的方法。
SQLAlchemy 2.0
要在 SQLAlchemy 2.0 中执行原始 SQL,您可以利用engine.connect() 方法:
with engine.connect() as connection:
result = connection.execute(text('SELECT * FROM your_table'))
# Perform operations on the result
通过利用engine.connect()上下文管理器,您可以确保连接建立并在退出上下文时自动关闭。
SQLAlchemy 1. x
在 SQLAlchemy 1.x 中,您可以使用 db.engine.execute() 方法结合 text() 函数执行原始 SQL:
from sqlalchemy import text
sql = text('select name from penguins')
result = db.engine.execute(sql)
names = [row[0] for row in result]
print(names)
请注意,db.engine.execute() 方法执行“无连接”查询,这意味着它不建立数据库会话。此方法在 SQLAlchemy 2.0 中已弃用,为了一致性和最佳实践,应避免使用此方法。
免责声明: 提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发到邮箱:[email protected] 我们会第一时间内为您处理。
Copyright© 2022 湘ICP备2022001581号-3