==Google App Engine データストアの利用==
[[Python][Google App Engine][GQL]]
===概要===
===利用上の注意===
====[http://code.google.com/intl/ja/appengine/docs/python/datastore/typesandpropertyclasses.html 検索条件と並べ替えに一部プロパティが使用できない]====
<<blockquote>>並べ替えやフィルタに使用するには、プロパティを、インデックス化する必要があるが、一部のプロパティは、インデックス化できないため、検索条件や並べ替えに使用できないないので注意が必要!<</blockquote>>
*Blob
*Text
====[http://code.google.com/intl/ja/appengine/docs/python/datastore/gqlreference.html GQL で検索条件にリテラルを使用する]====
<<blockquote>>GQL でリテラルを使用する場合には注意が必要。日付型などの場合DATE(リテラル)とする必要がある。<</blockquote>>
{|class="wikitable"
class MainPage(webapp.RequestHandler):
def get(self):
self.response.out.write('<<html><><body>>')
# (4) 保存されたデータを GQL で取り出す
# persons = Person.gql("ORDER BY id LIMIT 10")
# persons = Person.gql("WHERE id = :id ORDER BY id", id=int("2"))
persons = db.GqlQuery("SELECT * FROM Person ORDER BY id LIMIT 10")
self.response.out.write("<<form action='/add' method='post'>>") self.response.out.write("""<<table border='1'>> <<tr>> <<th>>id<</th><><th>>name<</th><><th>>mail<</th>> <</tr>>
""")
for person in persons:
self.response.out.write("<<tr>>") self.response.out.write("<<td>>%d<</td>>" %person.id) self.response.out.write("<<td>>%s<</td>>" %cgi.escape(person.name)) self.response.out.write("<<td>>%s<</td>>" %cgi.escape(person.mail)) self.response.out.write("<</tr>>")
self.response.out.write("""
<<tr>> <<td><><input type='text' size='2' name='id'><></td>> <<td><><input type='text' size='10' name='name'><></td>> <<td><><input type='text' size='15' name='mail'>> <<input type='submit' value='add'><></td>> <</tr>> <</table>>
""")
self.response.out.write("<</form>>") self.response.out.write('<</body><></html>>')
# データ投入処理