我有一个查询,看起来像这样:
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手动添加该值?
您需要使用literal_column,看起来有点像这样:
literal_column
sqlalchemy.orm.Query(Item, sqlalchemy.sql.expression.literal_column("0"))
注意,该text参数无需任何转换即可插入查询;如果您从应用程序外部接受text参数的值,则可能使您暴露于SQL Injection漏洞。如果这是您需要的东西,您将需要使用bindparam,它几乎一样易于使用;但您必须发明一个名称:
text
bindparam
sqlalchemy.orm.Query(Item, sqlalchemy.sql.expression.bindparam("zero", 0))