我可以从有条件的数据库模型中提取一行,但无法更新该行中的特定列:
我的数据库模型如下:
class UserDB(db.Model):
userNickName = db.StringProperty()
userEmailID = db.StringProperty()
userID = db.StringProperty()
createdAt = db.DateTimeProperty(auto_now_add=True)
logedInAt = db.DateTimeProperty(auto_now=True)
我可以通过以下查询来检查用户是否存在于我们的UserDB模型中:
q = db.GqlQuery("SELECT userNickName FROM UserDB WHERE userEmailID =:1", user.email())
useremailid = q.get()
if useremailid is None:
logging.error('user is not loged in earlier so create a row for that user')
userDB = UserDB(userNickName = user.nickname(),
userEmailID = user.email(),
userID = user.user_id()
)
userDB.logedInAt = datetime.now()
userDB.put() # Insert a row for a user
else: # User exist in our UserDB, just update `logInAt` column
logging.error("update the login time, since user is already user")
# How do i Update logedInAt column?
在其他部分,一旦我知道用户已经存在于我们的数据库中,我只想用当前时间戳更新loginInAt
字段,我该怎么办?,我在谷歌应用程序引擎上搜索了很多,但找不到。
感谢
Krishna
对q.get()
的调用结果不是id,而是实际的UserDB对象。所以你可以直接更新并保存:
user = q.get()
if...
else:
user.logedInAt = datetime.now()
user.put()
(顺便说一句,UserDb对于一个模型类来说是一个奇怪的名称:它应该只是User。而且也不需要为所有字段名加前缀。)