【问题标题】:Google App Engine Datastore get value of propertyGoogle App Engine Datastore 获取属性值
【发布时间】:2015-07-25 22:28:26
【问题描述】:

我有一些问题。假设我们有这个 Datastore 模型:

class SessionID(db.Model):
    SESSIONID = db.StringProperty()
    userid = db.StringProperty()
    userip = db.StringProperty()
    exp_time = db.IntegerProperty()

假设我们将 SESSIONID 属性注册为 1234,将 userid 分配给 bob,将 userip 分配给 123.123.123.123,并将 exp_time 分配给 1

问题 1: 假设我们知道 SESSIONID 值。使用该值,我如何获得 userid 的值?

【问题讨论】:

  • 这与我之前回答的问题有何不同?您是否要在每次需要对数据存储区进行查询时发布问题?
  • 不,我尝试使用uss = SessionID.all().filter('SESSIONID =', sid).get() if uss: usid = str(uss.userid)获取用户ID的值,但它会返回一个空白。
  • 可能是因为数据存储区中没有该 sid 的数据
  • 不。可以使用数据存储查看器查看数据。

标签: python python-2.7 google-app-engine google-cloud-datastore


【解决方案1】:
from models import User 
# Assuming you have user model class in models
user = User.query().filter(User.SESSIONID==1234).get()

现在用户将包含 User 类的一个或多个对象(取决于 SESSIONID 的唯一性),所以要获取 userid 只需:

id = user.userid

希望对你有帮助。

PS:阅读 Daniel 提到的文档,对你有很大帮助。

【讨论】:

  • 嗯。 type object 'SessionID' has no attribute 'query' 收到此错误。
  • 那是因为您使用的是旧的数据库模型。我假设您正在使用谷歌应用引擎启动。我建议开始使用新数据库(即 ndb)。现在使用:user = User.all().filter(SESSIONID=='1234').get() id = user.userid
  • 如果您发现任何进一步的困难,请告诉我们。
  • 为什么我需要使用新的“ndb”而不是旧的db?
  • 这是一个非常理论性的问题,只要谷歌它,你就会发现自己。首先看看这个stackoverflow.com/questions/12852442/…
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2015-07-25
  • 1970-01-01
  • 2013-05-02
  • 1970-01-01
  • 2016-06-21
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多