0

我能够从具有条件的数据库模型中获取一行,但无法更新该行中的特定列:

我的数据库模型如下:

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用当前时间戳更新字段,我该怎么办?我在谷歌应用引擎上搜索了很多但找不到它。

谢谢

克里希纳

4

1 回答 1

1

您调用的结果q.get()不是 id,而是实际的 UserDB 对象。所以可以直接更新并保存:

user = q.get()
if...
else:
    user.logedInAt = datetime.now()
    user.put()

(顺便说一下,对于模型类来说,UserDb 是一个奇怪的名称:它应该只是 User。而且也不需要为所有字段名称添加前缀。)

于 2014-08-31T12:37:01.980 回答