[gae]從 DB datastore 改到 NDB datastore

  • 3137
  • 0
  • 2014-03-27

[gae]從 DB datastore 改到 NDB datastore

最近升級,除了只是改變 import 之外,也中了一些改升級的陷阱。

from google.appengine.ext import ndb

陷阱如下:

  1. filter 改了語法
    原本
    .filter('username = ',users.get_current_user())
    改成
    .filter(myModel.username == users.get_current_user())
  2. order 改了語法
    原本
    .order('-happenddate')
    改成
    .order(-myModel.happenddate)
  3. delete 改了位置
    原本
    rec.delete()
    改成
    rec.key.delete()
  4. datetime 一律只有 UTC,不再儲存有時區資訊的 datetime,要顯示 local time 自己在程式裡轉。
  5. model.properties() 拿掉了
    改用 model._properties
  6. 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

這一篇應該還會持續更新,不曉得還有什麼陷阱等著我。

 

 

 

分享