Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/google-app-engine/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/database/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Google app engine GqlQuery返回随机结果_Google App Engine_Gql_Gqlquery - Fatal编程技术网

Google app engine GqlQuery返回随机结果

Google app engine GqlQuery返回随机结果,google-app-engine,gql,gqlquery,Google App Engine,Gql,Gqlquery,我正在基于Google的应用程序引擎编写一个非常简单的web应用程序。这是我第一次使用Python和Google的数据存储 应用程序应该在其主页上显示一些问题。这些问题存储在名为Question的表中 class Question(db.Model): question_id = db.IntegerProperty() question = db.StringProperty() 下面的代码选择此表的所有条目,并将数据提交到模板 questions = db.GqlQuery('SE

我正在基于Google的应用程序引擎编写一个非常简单的web应用程序。这是我第一次使用Python和Google的数据存储

应用程序应该在其主页上显示一些问题。这些问题存储在名为Question的表中

class Question(db.Model):
  question_id = db.IntegerProperty()
  question = db.StringProperty()
下面的代码选择此表的所有条目,并将数据提交到模板

questions = db.GqlQuery('SELECT * FROM Question ORDER BY question_id')

# debugging loop
for question in questions:
  logging.info(questions.question_id)

template_values = {
  'questions' : questions
}
最后,模板在index.html上显示问题

{% for question in questions %}
  // HTML-CODE
  {{ question.question }}
  // HTML-CODE
{% endfor %}
实际上,这些(非常基本的)操作运行得很好,但是程序跳过或向列表中添加了两次问题。这完全是随机发生的。我甚至认为它可能会在几个小时没有出现时消失。错误必须在GqlQuery语句之后立即发生,因为调试循环已指示错误的ID

跳过或添加哪个问题也是随机的,我在这里看不到模式。唯一的问题是,这不是一个比预期的多就是少的问题。似乎从来没有一个问题被跳过,另一个问题被同时添加两次。表格问题目前只包含五个条目,因此非常易于管理

我希望这不仅仅是我缺乏经验的结果。我在这个问题上花了好几天时间


提前感谢。

如果您正在添加或删除代码中其他地方的问题,这可能会导致这种看似错误的行为。默认情况下,应用引擎查询是“最终一致的”,这意味着查询不会立即反映数据存储的真实状态。有关查询一致性的更多信息,请访问

正如本文所述,祖先查询具有很强的一致性。要做到这一点,您必须将所有问题放在同一个“实体组”中。这很容易做到,但它必然会引入一个瓶颈,并限制您创建或修改问题的速度。只有当你知道问题很少被改变,即使你的网站上有大量的用户,这才是合适的

如果您不认为这是您所看到的问题,您能否发布更多关于如何在应用程序中创建/修改/删除问题的详细信息