實現標題幾乎等於How to use a labelled column in sqlalchemy filter?我相信這是一個單獨的問題。在union'd SQLAlchemy查詢中按標籤列進行過濾
,極大地簡化了我的問題:假如我有兩個疑問,每個返回我想要的結果的一個子集,我工會一起:
initial_task = "initial_task"
scheduled_task = "scheduled_task"
initial = session.query(Task.task_id,
User.signup_date.label('due_date'),
literal(initial_task).label('type'))\
.join(Task.user)
schedule = session.query(Task.task_id,
Schedule.due_date.label('due_date'),
literal(scheduled_task).label('type'))\
.join(Task.schedule)
tasks = initial.union_all(schedule)
而且是明確的:我知道這個例子可以改寫沒有工會;我的實際用例有五個單獨的查詢,除了這個正常格式的強制結果之外幾乎沒有任何共同之處。
如何過濾tasks
以僅包含2017年4月1日之後到期的任務?從概念上講,是這樣的:
tasks.filter(tasks.c.due_date >= datetime(2017, 4, 1))
的主要問題是我無法弄清楚如何參考due_date
列在一般的方式。一切我從文檔嘗試似乎談論低層API,並在ORM層導致:
'Query' object has no attribute 'c'