我正在使用带有Python(Django)的Google App Engine。
如何模仿"SELECT * FROM bla WHERE touser = common.userstats("key") OR fromuser = common.userstats("key") ORDER BY date ASC"
?
我在考虑这样的事情,但我无法按照我想要的顺序得到它。
recievedlist = models.P1.all()
recievedlist.filter("touser =", common.userstats("key"))
plus1list = recievedlist.fetch(50)
sendlist = models.P1.all()
sendlist.filter("fromuser =", common.userstats("key"))
plus1list += sendlist.fetch(50)
# order plus1list
答案 0 :(得分:2)
您可以在模型中添加ListProperty
,其中包含touser
和fromuser
。然后,您可以执行单个查询以检索您感兴趣的按日期排序的实体。这消除了数据存储区查询和内存中排序,但会使您在模型上花费额外的索引和更多的存储空间。
(伪)示例:
class bla(db.Model):
...
toandfromuser = db.ListProperty(...)
然后你可以这样做一个查询(因为如果列表toandfromuser
的任何元素与你要查找的值匹配,实体将匹配):
SELECT * FROM bla WHERE toandfromuser = common.userstats("key") ORDER BY date ASC