无法在Google App引擎上更新Python中的列值



我可以从有条件的数据库模型中提取一行,但无法更新该行中的特定列:

我的数据库模型如下:

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。而且也不需要为所有字段名加前缀。)

相关内容

  • 没有找到相关文章

最新更新