现在我想获取ip为uniq且id为max。
的数据In [53]: ModuleInfo.query.group_by(ModuleInfo.ip).all()
Out[53]:
[<ModuleInfo 1>,
<ModuleInfo 5>,
<ModuleInfo 14>,
<ModuleInfo 16>,
<ModuleInfo 20>,
<ModuleInfo 17>,
<ModuleInfo 28>,
<ModuleInfo 27>]
retuan值不是最大ID,我想ip:127.0.0.1
- &gt; id:4
,我使用order_by id,但它只是反转列表。
当我尝试使用distinct
时,我发现它不起作用:
In [51]: ModuleInfo.query.distinct(ModuleInfo.ip).all()
Out[51]:
[<ModuleInfo 1>,
<ModuleInfo 2>,
<ModuleInfo 3>,
<ModuleInfo 4>,
<ModuleInfo 5>,
<ModuleInfo 6>,
<ModuleInfo 7>,
<ModuleInfo 14>,
<ModuleInfo 15>,
<ModuleInfo 16>,
<ModuleInfo 17>,
<ModuleInfo 18>,
<ModuleInfo 19>,
<ModuleInfo 20>,
<ModuleInfo 21>,
<ModuleInfo 22>,
<ModuleInfo 23>,
<ModuleInfo 24>,
<ModuleInfo 25>,
<ModuleInfo 26>,
<ModuleInfo 27>,
<ModuleInfo 28>,
<ModuleInfo 29>,
<ModuleInfo 30>]
答案 0 :(得分:0)
你可以试试这个:
from sqlalchemy import func
foo = Session.query(func.max(ModuleInfo.id),ModuleInfo.ip).\
group_by(ModuleInfo.ip).order_by(ModuleInfo.ip).all()
我使用了声明式基础和作用域Session来运行测试,但想法是一样的。您应该收到一个带有(max(id),ip)元组的列表。
哈努哈利