向sqlalchemy查询的SELECT子句添加列

2024-05-17 18:17:17 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个基本查询,我想根据条件使用不同的select子句进行自定义。本质上

engine = create_engine(…)
session = sessionmaker(bind=engine)()
    
base_query = session.query(Employees.id).\
                     filter(Employees.years_service>5)

if need_name:
    Add a select clause for the name field

if need_birthday:
    Add a select clause for birthday

…但筛选条件要复杂得多,因此我不希望只创建重复的查询

当我想添加额外的过滤条件时,我可以通过如下方式进行这种装饰:

if years_service_max_needed:
    base_query.filter(Employees.years_service<10)

但我找不到允许我添加额外select语句的查询对象方法

有没有办法做这样的事


Tags: nameaddbaseifsessionserviceclauseneed
1条回答
网友
1楼 · 发布于 2024-05-17 18:17:17

可以使用Query.add_columns执行此操作:

Add one or more column expressions to the list of result columns to be returned.

q = session.query(Employees.id)

q = q.add_columns(Employees.name, Employees.years_service)

for row in q:
    print(row)

相关问题 更多 >