[gae]從 DB datastore 改到 NDB datastore
最近升級,除了只是改變 import 之外,也中了一些改升級的陷阱。
from google.appengine.ext import ndb
陷阱如下:
- filter 改了語法
原本
.filter('username = ',users.get_current_user())
改成
.filter(myModel.username == users.get_current_user()) - order 改了語法
原本
.order('-happenddate')
改成
.order(-myModel.happenddate) - delete 改了位置
原本
rec.delete()
改成
rec.key.delete() - datetime 一律只有 UTC,不再儲存有時區資訊的 datetime,要顯示 local time 自己在程式裡轉。
- model.properties() 拿掉了
改用 model._properties - filter 不改變 原物件,要達成串接效果,就要用物件來接。
原本
rec.filter(myModel.username == users.get_current_user())
rec.filter(myModel.happenddate >= for_cur_month)
改成
rec = rec.filter(myModel.username == users.get_current_user())
rec = rec.filter(myModel.happenddate >= for_cur_month)
https://developers.google.com/appengine/docs/python/ndb/queries
這一篇應該還會持續更新,不曉得還有什麼陷阱等著我。