gpt4 book ai didi

python - App Engine GQL 查询 - 排序

转载 作者:行者123 更新时间:2023-12-01 05:57:56 24 4
gpt4 key购买 nike

在 GAE (python) 中合并两个 GQLQueries 时遇到一些问题。

  fp_events = db.GqlQuery("SELECT * FROM Event WHERE firstPlayer=:1", alias).fetch(mylimit)
sp_events = db.GqlQuery("SELECT * FROM Event WHERE secondPlayer=:1", alias).fetch(mylimit)
events = fp_events.append(sp_events)

但是,当我尝试使用 for 循环 for event in events: 迭代这些事件时,我收到 TypeError: 'NoneType' object is not iterable 错误在那条线上。我怀疑这与我尝试执行的附加有关,尽管我不完全确定。

这些事件还具有日期时间属性...我如何按时间降序对结果事件列表进行排序?虽然我可以在上面的两个查询中使用 ORDER BY time DESC,但它们的合并不一定能保证排序。

我还应该提到,事件表的firstPlayer 和secondPlayer 属性是互斥的(没有事件将firstPlayer 和secondPlayer 设置为同一玩家)。

谢谢!

最佳答案

您可以使用list将可迭代对象转换为Python列表:

fp_events = db.GqlQuery("SELECT * FROM Event WHERE firstPlayer = :1", alias).fetch(mylimit)
sp_events = db.GqlQuery("SELECT * FROM Event WHERE secondPlayer = :1", alias).fetch(mylimit)

要合并两个列表,请尝试以下操作:

fp_events_list = list(fp_events)
sp_events_list = list(sp_events)
events = fp_events_list + sp_events_list

我刚刚在远程 shell 中对我自己的 AppEngine 数据存储之一进行了尝试,它确实有效。

恐怕为了获得您想要的排序,您必须使用 the sorted builtin 对它们进行排序:

sorted_events = sorted(events, key=lambda event: event.time)

关于python - App Engine GQL 查询 - 排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11637677/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com