繁体   English   中英

从 SQLAlchemy orm 构建完整查询

[英]Build full query from SQLAlchemy orm

最终,我尝试使用 pandas read_sql 接受原始 SQL 查询。

我正在尝试转换类似的东西;

sql = str(session.query(Post).filter(Post.user_id=1))

这会产生类似的东西

select * from Post where user_id = %(user_id_1)

有没有办法用已经插入的参数生成该查询?

如您所见,如果我们str()一个 ORM 查询,我们将得到 SQL 命令文本,其中参数占位符使用我们方言的 paramstyle:

qry = session.query(Parent).filter(Parent.id == 1)
sql = str(qry)
print(sql)
"""console output:
SELECT parent.id AS parent_id, parent.lastname AS parent_lastname, parent.firstname AS parent_firstname 
FROM parent 
WHERE parent.id = %(id_1)s
"""

如果我们想在 SQL 语句中嵌入参数值,那么我们需要.compile()它:

sql_literal = qry.statement.compile(
    compile_kwargs={"literal_binds": True},
)
print(sql_literal)
"""console output:
SELECT parent.id, parent.lastname, parent.firstname 
FROM parent 
WHERE parent.id = 1
"""

(关于 SQL 注入的标准免责声明适用。)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM