爬虫類嫌いのPython日記

爬虫類が大の苦手の筆者が、Pythonに挑戦。他にも、RubyやObjective-C、Google Appengine、Herokuなど色々とチャレンジしています。

GoogleAppEngineのデータストアのまとめ

Google App Engineのデータストア関連のまとめです。

モデルの定義

class クラス名( db.Model ):
  プロパティ名 = プロパティクラス
  …… 必要なだけ記述する ……

参考例:

class UserData(db.Model):
    name = db.StringProperty(required=True, multiline=False)
    mail = db.StringProperty(multiline=False)
    tel  = db.StringProperty(multiline=False)
    text = db.StringProperty(multiline=True)

プロパティクラスの詳細なドキュメント

データの取得

rows  = UserData.all()
param = {'rows' : rows}

データの取得は、自分で作成したデータモデルクラスのallメソッドを使用します。
このメソッドは、自分で作成したデータモデルクラスのスーパークラスであるdb.Modelに定義されています。

データの保存

name = self.request.get('name')
data = UserData(name=name)

self.request.getで値を取得します。データモデルクラスでrequiredに設定した値をモデルクラスのインスタンス生成時の引数に使用します。requiredに設定した値がない場合、引数は不要です。

data.mail = self.request.get('mail')
data.tel  = self.request.get('tel')
data.text = self.request.get('text')
data.put()

インスタンスを生成したら、後はそれぞれのプロパティに値を設定します。そして、最後にputメソッドでDBに保存されます。

データの削除

id   = long(self.request.get('id'))
data = UserData.get_by_id(id)
data.delete()

送信されてきたidの値を、get_by_idメソッドでDBからエンティティを取得します。
idは、エンティティがDB登録された際に自動的に付与されるインクリメント値です。
エンティティを取得したら、deleteメソッドで削除完了です。