0
我能夠從與條件的DB模式讀取行和,但無法更新該行中的特定列:無法更新谷歌應用程序引擎Python中的列值
我的數據庫模型如下:剛
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?
在其他部分,一旦我知道,用戶已經在我們的數據庫存在,我:
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的模型中存在或不與下面的查詢想起來使用當前時間戳記日期loginInAt
字段,我該怎麼辦?我在谷歌應用程序引擎上搜索了很多,但無法找到它。
感謝
克里希納
我完全同意你的建議,並在代碼中進行更新。但是它如何更新已登錄用戶的'logedInAt'?我只是想執行下面的SQL查詢:UPDATE UserDB SET logedInAt = NOW()WHERE userEmailID = user.email()' – 2014-08-31 13:50:57
對不起,我根本不理解你的問題。您獲取該項目,更改一個值並保存它。那怎麼不清楚?在任何情況下,GQL都不是SQL,並且不支持UPDATE查詢。 – 2014-08-31 14:35:38
我得到了問題,並解決它的幫助下你的上面的意見,其實問題是與查詢'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,'emailID':None,u'nickName':u'[email protected]','createdAt':None}'。所以用*代替nickname,現在一切正常。非常感謝您的善意幫助,我們接受。 – 2014-09-01 02:59:22