首页 > 数据库 > mysql教程 > 如何从 SQLAlchemy 表达式中检索原始编译的 SQL?

如何从 SQLAlchemy 表达式中检索原始编译的 SQL?

Susan Sarandon
发布: 2025-01-07 10:56:41
原创
291 人浏览过

How Can I Retrieve the Raw Compiled SQL from a SQLAlchemy Expression?

从 SQLAlchemy 表达式检索原始、编译的 SQL

在 SQLAlchemy 中,从表达式对象获取原始、编译的 SQL 查询可能是一个挑战。虽然表达式 API 提供了方便的接口,但它使底层 SQL 隐藏在视图之外。

努力查找参数

您已检查了查询。_params 字典,但发现尽管查询执行成功,但它还是空的。这是因为 SQLAlchemy 有意将参数封装在查询对象中。通过这样做,它确保了与各种 DB-API 的兼容性。

使用文字绑定

但是,SQLAlchemy 文档通过使用literal_binds 提供了一种解决方法:

print(q.statement.compile(compile_kwargs={"literal_binds": True}))
登录后复制

这种方法允许您打印包含参数的查询语句。但它仅适用于基本类型(例如整数、字符串),不支持没有预定义值的 bindparam()。

安全警告

文档强烈建议不要在不受信任的输入中使用此技术。 SQLAlchemy 的类型强制转换机制并非万无一失,可能会导致安全漏洞。

结论

虽然默认情况下不直接公开,但可以从 SQLAlchemy 检索原始的编译 SQL使用literal_binds关键字参数的表达式。然而,在处理不受信任的数据时务必小心谨慎。

以上是如何从 SQLAlchemy 表达式中检索原始编译的 SQL?的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板