Google App Engine - Datasource の使い方

on 2010/10/31 - -

Python の場合の Datastore の使い方。

例えばサイトの情報を格納しておきたかったとすると、以下の流れのはず。

■1:Model を定義

 db.Model を継承した Site というクラスを定義する。
 インスタンス変数にはおまじない的に Property のサブクラスを入れておく。


from google.appengine.ext import db

class Site(db.Model):
name = db.StringProperty(required=True)
url = db.StringProperty(required=True)



■2:データの追加

 追加の場合は、以下のように new した後に put() するだけ。


site = Site(name="hogehoge.com",url="http://hogehoge.com")
site.put()


 データをユニークにしたい場合は、get_or_insert() を使うとよさげ。
 ※ 第1引数がキーとなって、データが存在すれば取得、なければ追加して取得


site = Site.get_or_insert(key,name="hogehoge.com",url="http://hogehoge.com")



■3:データの取得

 取得したい Site のキーを知っているなら、以下で取得できる。


site = Site.get(key)


 以下は name でソートして、すべて取得の場合。


sites = Site.all()
sites.order("name")


 昇順でソートする場合はプロパティ名に - をつけます。


sites = Site.all()
sites.order("-name")


 条件を指定する場合は、filter() を使う。


sites = Site.all()
sites.filter("name = ", name)



■3:更新

 get() や get_or_insert() や all() で取得し、プロパティを変更し、put() を呼ぶだけ。


sites = Site.get(key)
site.name = "new hogehoge.com"
site.put()


最後に、追加や更新の時に Transaction とか気をつけたい場合は、
以下にちゃんとしたやり方があります。
http://code.google.com/intl/en/appengine/docs/python/datastore/transactions.html
 
SQL を書かなくていいし、データの操作をオブジェクトの操作として実装できるので楽ですね。
 

No comments :