Я могу принести ряд из модели БД с условием и, но не в состоянии обновить конкретный столбец в этой строке:Невозможно обновить значение столбца в Python на Google App Engine
Моя модель 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?
в еще части, когда я знаю, что пользователь уже существует в нашем дб, я просто хочу подняться введите поле loginInAt
с текущей меткой времени, как я могу это сделать? Я много искал в движке Google, но не смог ее найти.
Благодаря
Кришна
Я полностью согласен с вашим предложением и собираюсь обновить его в коде. Но как он обновляет 'logedInAt' зарегистрированного существующего пользователя? Я просто хотел выполнить следующий SQL-запрос 'UPDATE UserDB SET logedInAt = NOW() WHERE userEmailID = user.email()' –
Извините, я не понимаю вашу проблему вообще. Вы получаете элемент, изменяете значение и сохраняете его. Как это непонятно? В любом случае, GQL не является SQL и не поддерживает запросы UPDATE. –
У меня возникла проблема и разрешил ее с помощью ваших комментариев, на самом деле проблема связана с запросом 'q = db.GqlQuery (« SELECT nickName FROM UserDB WHERE userEmailID =: 1 », user.email())' I выбрали только «nickName» и, следовательно, следующую ошибку: «Невозможно поместить частичную сущность:% s»% entity) BadRequestError: не может помещать частичную сущность: {'logedInAt': datetime.datetime (2014, 9, 1, 2, 49, 45, 344570), 'userID': None,'IDIDID: None, u'nickName ': u'[email protected]', 'createdAt': None} '. Поэтому замените nickName на * и теперь все отлично. Большое спасибо за вашу любезную помощь, принятую. –