2011年1月24日月曜日

GAE エンティティをキーによって特定する場合のメモ

チラ裏メモ

Google App Engine のデータストアで、こちら側からキーを指定して管理する場合について
まず、キーを指定してデータを格納する場合

サンプルコード

import db

class Student(db.Model):
  name = db.StringProperty()
  grade = db.IntegerProperty()

class Action():
  def Post(self):
    Post = Student(key_name)
    Post.name = "バーロー"
    Post.grade = "4"
    Post.put()

これで、key_nameをキーとするデータが格納出来ました。
更新する場合も、同じkey_nameでエンティティのインスタンスを作成し、データを変えてput()してやれば問題ありません

で、データを取得する場合

  def get(self):
    Get = Student(key_name) // 一意のキーでインスタンスを作成
    Person = Student.get(Student.key()) // これで入った
  
これで、Personにkey_nameで前回格納した値をもつインスタンスが入っています。
単純にkey_nameで指定しただけでは入っておらず、getしないと値を持ってこれません。

「エンティティオブジェクト」という言葉通りの実装ですが、SQLに慣れた人間からするとちょっと?となってしまう感じ。
key_name指定したんだから値持って来いや!と言いたくなります。

仕組みさえ分かってしまえば簡単なことですね。

0 件のコメント:

コメントを投稿

注: コメントを投稿できるのは、このブログのメンバーだけです。