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

2024-09-27 00:22:46 发布

您现在位置:Python中文网/ 问答频道 /正文

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

我的数据库模型如下:

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?

在else部分,一旦我知道用户已经存在于我们的数据库中,我只想用当前时间戳更新loginInAt字段,我该怎么做?,我在googleappengine上搜索了很多,但是找不到。你知道吗

谢谢

克里希纳


Tags: 模型数据库autodbisnowuseriduserdb
1条回答
网友
1楼 · 发布于 2024-09-27 00:22:46

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

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

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

相关问题 更多 >

    热门问题