【问题标题】:Query statement in get_by_id (ndb, GAE)get_by_id 中的查询语句(ndb,GAE)
【发布时间】:2015-05-01 10:26:01
【问题描述】:

我正在使用带有 webapp2 和 Python 的 Google App Engine。

我有一个带有deleted 字段的User 模型:

class User(ndb.Model):
    first_name = ndb.StringProperty()
    last_name = ndb.StringProperty()
    email = ndb.StringProperty()
    deleted = ndb.BooleanProperty(default=False)

我想通过调用User.get_by_id() 来获取用户对象,但我想排除具有deleted 字段True 的对象。用普通的get_by_id()函数可以做到这一点吗?

如果没有,我可以覆盖它吗?

或者我应该创建一个自定义类方法,例如 get_by_id_2(),它执行普通的 .get() 查询,如下所示:User.query(User.key.id()==id, User.deleted==False).get()?

你会推荐其他东西吗?

【问题讨论】:

    标签: python google-app-engine


    【解决方案1】:

    查询比 get 慢得多,并且受最终一致性的影响。您可能应该使用普通的 get_by_id 并在之后检查已删除。您当然可以将其封装在一个方法中:

    @classmethod
    def get_non_deleted(cls, id):
        entity = cls.get_by_id(id)
        if entity and not entity.deleted:
            return entity
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-01-02
      • 1970-01-01
      • 2013-01-27
      相关资源
      最近更新 更多