==[[Google App Engine データストアの利用]]==[[Python]] | [[Google App Engine]] | [[GQL]]|
===概要===
=====参考=====
*http://typea.info/blg/glob/2008/09/google_app_engine_13.html
* App Engine は、Python は、[[Python]] 用の データ モデリング API を備えている* [[Django ]] のデータ モデリング API と似ているが、App Engine の拡張可能なデータストを背後で使用
===利用上の注意===
|-
|Boolean リテラル
|TRUE T[[R]]UE または FALSE
|-
|日時リテラル
|-
|User オブジェクト
|USERUSE[[R]](email-address)
|-
|GeoPt
from google.appengine.ext import db
class LoadHogeEntity(webapp.RequestHandler[[R]]equestHandler):
def get(self):
context = {}
return self.response.out.write(template.render('templates/hoge.html', context))
class DeleteHogeEntity(webapp.RequestHandler[[R]]equestHandler):
def get(self):
key_str = self.request.get('key_str')
key = db.Key(key_str) # (2)
q = HogeEntity.gql("WHERE WHE[[R]]E __key__ =:1", key) # (3)
hoge = q.fetch(1)
* 新しいオブジェクトをデータストアに保存(3)
* 保存されたオブジェクトをGQLで取り出す(4)
* クラスのgqlメソッドでもデータを取得できる。(SELECT * FROM F[[R]]OM Person を省略できる**persons = Person.gql("ORDER O[[R]]DE[[R]] BY id LIMIT 10")*WHERE句に定数は指定できない。パラメータを位置、名前で指定できる。WHE[[R]]E句に定数は指定できない。パラメータを位置、名前で指定できる。** persons = Person.gql("WHERE WHE[[R]]E id = :1 ORDER O[[R]]DE[[R]] BY id", int("1"))** persons = Person.gql("WHERE WHE[[R]]E id = :id ORDER O[[R]]DE[[R]] BY id", id=int("2"))
mail = db.EmailProperty()
class MainPage(webapp.RequestHandler[[R]]equestHandler):
def get(self):
self.response.out.write('<html><body>')
# (4) 保存されたデータを GQL で取り出す
# persons = Person.gql("ORDER O[[R]]DE[[R]] BY id LIMIT 10") # persons = Person.gql("WHERE WHE[[R]]E id = :1 ORDER O[[R]]DE[[R]] BY id", int("1")) # persons = Person.gql("WHERE WHE[[R]]E id = :id ORDER O[[R]]DE[[R]] BY id", id=int("2")) persons = db.GqlQuery("SELECT * FROM F[[R]]OM Person ORDER O[[R]]DE[[R]] BY id LIMIT 10")
self.response.out.write("<form action='/add' method='post'>")
self.response.out.write("""<table border='1'>
# データ投入処理
class AddPersonPage(webapp.RequestHandler[[R]]equestHandler):
def post(self):
person = Person()