以下查询:
SELECT L1.task_id FROM task_log L1
LEFT JOIN task_log L2 ON L1.started BETWEEN L2.started AND L2.ended
WHERE L2.task_id IS NULL;
只需读取在没有其他任务运行时启动的所有任务日志。 PHP / ZF2中的抽象看起来像这样:
$db->select(array('L1' => 'task_log'))
->columns('task_id')
->join(array('L2' => 'task_log'), "L1.started BETWEEN L2.started AND L2.ended", array(), 'left');
我在Django中寻找类似的东西,或者至少是python。根据{{3}},在django模型中构建它是不可理解的(可以理解)。 python / django 还有其他选择吗?
答案 0 :(得分:0)
似乎有这些选择:
(A)RawSQL
带有字符串模板,可能还有一些通用的模型字段反射代码,使它更通用。
(B)Django的Expression API可能允许你重用一些Django ORM的东西并只扩展它以使SELF JOIN起作用。虽然我想知道为什么不会有一些Django模块。也许它的用例太少了。
答案 1 :(得分:0)
抬头我发现了这个:http://docs.sqlalchemy.org/en/latest/core/tutorial.html这正是我所需要的。