爬虫類嫌いのPython日記

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

GoogleAppEngineでデータストアを利用する

データストアとは

Webアプリケーションでは、MySQLPostgreSQLなどのDBにデータを保存します。
Googleサイトには、専用のDB機能が用意されています。GAEでは、この機能をAPIを介して利用します。
GAEでは、DBを利用する機能を「データストア(Datastore)」と言います。「Datastore API」と言うライブラリとして提供されており、Googleのサーバー内に用意されているDB機能にアクセスするための手段を提供するクラスで構成されています。


データストアは、SQLデータベースとは異なり、事前にテーブルを定義する必要はありません。データストアは、データを保管するのに「モデル」と呼ばれるクラスを利用します。必要な項目(プロパティ)を持ったモデルを定義し、そのインスタンスを作って保存するだけで、データを保管する事ができます。

モデルを定義する

モデルを定義する場合、どういう種類のどんな値を保管するのかをプロパティとして用意します。

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

プロパティとして保存するデータの項目は、「プロパティクラス」と呼ばれるクラスを使って定義します。
プロパティクラスの詳細なドキュメント


実際に定義してみます。
ここでは「UserData」クラスとして、main.pyの最初(MainHandlerの前)に追記します。
main.pyに追記

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)

ここで使っている「StringProperty」と言うプロパティクラスは、テキストの値を保管するためのものです。
引数には、このプロパティクラスに関する細かな設定情報を記述します。
required……必須項目かどうかを設定
multiline……テキストで複数行の値を認めるかを設定