libro
www.tuyano.com
PythonによるGoogle App Engine(GAE)プログラミング入門

データストアによるデータベースの利用 (2/6)

作成:2010-01-03 14:39
更新:2010-05-10 21:24

■モデルを定義する

では、実際にデータストアを使ってみましょう。まずは、モデルを定義します。ここでは、「名前」「メッセージ」「送信時間」といったフィールドを持つモデルクラスを定義し、利用してみることにしましょう。

モデルを利用するには、「google.appengine.ext」というところにある「db」というライブラリをロードします。このdbは、データストアへのアクセスに関する様々な機能をもっており、必ずこれをロードするようにしておく必要があります。

モデルクラスの定義は、「db.Model」を継承して作成します。クラスには、保存するデータをそれぞれメンバー変数として定義しておきます。ここでは、name、message、timeというメンバー変数を用意していますが、それぞれちょっと変わったものが値として代入されていますね。

db.StringProperty――テキストの値をプロパティとして保管するためのもの
db.DateTimeProperty――日時の値をプロパティとして保管するためのもの

モデルクラスのメンバー変数は、dbに用意されている「○○Property」というクラスのインスタンスを値として設定します。これは、モデルのプロパティを管理するためのもので、今回使ったStringPropertyDateTimePropertyは、それぞれテキストおよび日時の値を保管し管理するためのものです。

また、これらは引数がいくつか用意されていますが、これはそのプロパティの性質を指定するためのものです。今回使ったのは以下のようなものになります。

required――その項目が必須かどうか。これがTrueだと、そのモデルのインスタンスを作る際、必ずその値を引数に渡さなければならなくなります。
multiline――テキスト関係のプロパティで、複数行のテキストを許可するかどうかを指定するものです。
auto_now_add――日時関係のプロパティで、エンティティが作成された日時を自動的に設定するためのものです。

これらを用意することで、そのプロパティが絶対に値を用意しないといけないものにしたり、自動的に時間の値を設定したりできるようになります。非常に便利ですね。注意しておきたいのは、「required=Trueに指定すると、インスタンス作成時、必ずその項目の値を引数に指定しないといけなくなる」という点でしょう。値がないと、インスタンスの作成に失敗します。

※プログラムリストが表示されない場合

AddBlockなどの広告ブロックツールがONになっていると、プログラムリスト等が表示されない場合があります。これらのツールをOFFにしてみてください。

●プログラム・リスト●

※以下のimport文をmai.pyの冒頭に追加する
from google.appengine.ext import db

※以下のモデルクラスの定義をmain.pyに追加する
class MyData(db.Model):
  name = db.StringProperty(required=True,multiline=False)
  message = db.StringProperty(multiline=True)
  time = db.DateTimeProperty(auto_now_add=True)
※関連コンテンツ

「PythonによるGoogle App Engine(GAE)プログラミング入門」に戻る