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

标签 python sqlalchemy

我有一个如下所示的查询:

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 ,看起来有点像这样:

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

注意 text 参数被插入到查询中而不进行任何转换;如果您从应用程序外部接受 text 参数的值,这可能会使您面临 SQL 注入(inject)漏洞。如果这是你需要的东西,你会想要使用 bindparam , 使用起来也很简单;但你必须发明一个名字:

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

关于python - 如何在 sqlalchemy 查询中选择文字值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7533146/

相关文章:

python - 饼图中的间距字符串

python - 如何安装pybrain?

python - 在 Ubuntu 上安装 pgAdmin - 不工作

python - 使用 Scrapy 获取 CSS 样式表上的背景图片

sql - 从 SQLAlchemy 中的文件执行 SQL

Python SQLAlchemy : Reflecting the database breaks default/onupdate methods?

python - 如何在python中向长对象添加美元符号

python - 使用 SQLAlchemy 在 Postgres 中进行不区分大小写的索引

python - SQLAlchemy - 如何同时从动态加载和预加载中获益

python - 与 Postgres 数据库通信时如何保护 Pandas 方法?