瞭解 Datastore:
Datastore 屬於 NoSQL 儲存機制,它還提供了一個 SQL-like 的查詢語言,稱之為 GQL。其他詳細資料請閱讀官方文件。
建立 Model:
首先來建立 Model,這裡指的 Model 是一個 Python Class,其中包含描述 Entity 資料欄位的型態、長度等等。若我們想為書籍建立 Model,它應該會擁有書名、出版商、登錄日期、作者等欄位,參考下面程式碼如何定義書本的 Model:
from google.appengine.ext import db
class Book(db.Model):
# 書名,字串型態,並且設定為必要欄位
title = db.StringProperty(required=True)
# 作者,字串型態
author = db.StringProperty()
# 出版商,字串型態
publisher = db.StringProperty()
# 建檔日期,DateTime 型態,並設定為資料建立時自動加入當下時間
create_date = db.DateTimeProperty(auto_now_add=True)
其他更多關於屬性種類及設定可以參考官方文件。
儲存資料:
Model 建立好後,我們可以來存取資料,使用方法相當簡單。參考以下程式碼:
# 我自己習慣將 Model 獨立成一個 model.py 檔案,因此程式碼裡有 import model
import model
...
# 建立 Book 物件,必要欄位必須在建立時就給屬性值
book = model.Book(title="Dive into Python")
# 設定屬性值
book.author = "Mark Pilgrim"
book.publisher = "Apress"
# 儲存 ( 此方法包含 Create 跟 Update ),刪除請使用 delete()
book.put()
成功後可以到 http://your-ip:8000/ 點選 Datastore Viewer 查看你剛剛新增的 Book 資料。
取得資料:
取得資料的方式有很多種,以下列出幾個基本的使用方式:
import model
from google.appengine.ext import db
...
# 方法一
books = db.GqlQuery("SELECT * FROM Book WHERE author = :1", param)
for book in books:
print book.title
# 方法二
books = model.Book.gql("WHERE author = :1", param)
for book in books:
print book.title
# 方法三
books = db.Query(model.Book).filter("author = ", param)
for book in books:
print book.title
以上為幾個基本查詢資料的方式,還有未列出來的部分請參考官方文件。
Environment :
・ Arch Linux
・ Python 2.7
Reference :
・ Webapp2 official site
・ The Python DB Datastore API