gae/pのgqlの書き方
問題
データストアへクエリを発行したい
方法
タイトル降順、10件まで
必ず SELECT * FROM で始める
SELECT * FROM WikiWords ORDER BY title DESC LIMIT 10
pythonから
from google.appengine.ext import db q = db.GqlQuery("SELECT * FROM WikiWords") results = q.fetch(20) for x in results: print x.title
文字列の前方一致検索。
search_key = u"東京" q = db.GqlQuery("SELECT * FROM WikiWords WHERE title >= :1 and title < :2 ", search_key, search_key + u"\uFFFD") results = q.fetch(10) for x in results: print x.title.encode('utf-8')
Unicodeの特殊文字としてU+FFFD (REPLACEMENT CHARACTER) を使う。
部分一致検索はgqlではできない。
全て検索してからpythonのプログラムとして処理する。
reを使う場合の例。
from google.appengine.ext import db from wiki.models import WikiWords import re q = db.GqlQuery("SELECT * FROM WikiWords") results = q.fetch(100) for x in results: if re.search(u"東京大学", x.body): print x.title.encode('utf-8')