I am able to fetch a row from a db model with condition and but unable to update a particular column in that row:
My DB model is as follow:
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)
I can check that user is exist in our UserDB model or not with following query:
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?
In the else part once I know that user is already exist in our db, I just want to update the loginInAt
field with current timestamp, how can I do?, I search a lot on google app engine but unable to find it.
Thanks
Krishna
The result of your call to q.get()
is not an id, but the actual UserDB object. So you can update it directly and save it:
user = q.get()
if...
else:
user.logedInAt = datetime.now()
user.put()
(UserDb is a strange name for a model class, by the way: it should be just User. And there's no need to prefix all the field names, either.)