小编典典

如何在sqlalchemy查询中选择文字值?

python

我有一个查询,看起来像这样:

query = session.query(Item) \
    .filter(Item.company_id == company_id) \
    .order_by(Item.id)

这是一个非常基本的查询。除了提取Item的值之外,我还想将其他值添加到混合中,然后将其返回给我。在原始SQL中,我会这样做:

SELECT *, 0 as subscribed
FROM items
WHERE company_id = 34
ORDER BY id

如何通过sqlalchemy手动添加该值?


阅读 221

收藏
2020-12-20

共1个答案

小编典典

您需要使用literal_column,看起来有点像这样:

sqlalchemy.orm.Query(Item, sqlalchemy.sql.expression.literal_column("0"))

注意,该text参数无需任何转换即可插入查询;如果您从应用程序外部接受text参数的值,则可能使您暴露于SQL
Injection漏洞。如果这是您需要的东西,您将需要使用bindparam,它几乎一样易于使用;但您必须发明一个名称:

sqlalchemy.orm.Query(Item, sqlalchemy.sql.expression.bindparam("zero", 0))
2020-12-20