Google app engine 如何将查询结果提取到列表中?
我正在尝试将数据存储查询的结果提取到python中的列表中。然后,我尝试了以下方法:Google app engine 如何将查询结果提取到列表中?,google-app-engine,Google App Engine,我正在尝试将数据存储查询的结果提取到python中的列表中。然后,我尝试了以下方法: foo = db.GqlQuery("SELECT url FROM Ads").run() 及 但两者都没有运气——福只是空的。如何正确获取结果\ 编辑:好的,我通过使用以下工具使其正常工作: someList = [] q = db.GqlQuery("SELECT url FROM Ads") for p in q.run(limit=None, batch_size=1000): someL
foo = db.GqlQuery("SELECT url FROM Ads").run()
及
但两者都没有运气——福只是空的。如何正确获取结果\
编辑:好的,我通过使用以下工具使其正常工作:
someList = []
q = db.GqlQuery("SELECT url FROM Ads")
for p in q.run(limit=None, batch_size=1000):
someList.append(p.url)
是否有较短的解决方案?通过在GQL语句中指定字段(而不是
*
),您实际上正在运行一个。如果您检查index.yaml
文件,您应该会看到dev服务器已经自动生成了一个支持此查询的索引
通常,您会查询整个实体,然后根据需要对实体进行迭代(在您的例子中是构建一个列表),就像您所做的那样
如果您有大型实体,则投影查询可能很有用,但通常只需要查询一些特定属性,这将减少延迟/减少带宽等。如果您确实需要可以使用fetch的列表。如果你不打算重新使用列表,我会考虑为什么你需要一个列表,不能只是迭代。Oh和list(q.run(limit=None,batch_size=1000))比for循环更简单。请注意文档中关于fetch的注释注意:此方法只是run()方法的一个薄包装,与直接使用run()相比效率更低,内存更密集。您应该很少需要使用fetch();它主要是为了方便您检索内存中完整的查询结果列表。
someList = []
q = db.GqlQuery("SELECT url FROM Ads")
for p in q.run(limit=None, batch_size=1000):
someList.append(p.url)