2012-06-24 11 views
6

世界ではどのように文字列変数をPythonでGQLに渡しますか?私はそれをSQLでうまくいくことができますが、うまく機能しません。ここで私が持っているものです。文字列変数をgqlクエリに渡す

personalposts = db.GqlQuery("select * from PersonalPost where user_id = %s order by created desc limit 30" % user_id) 

これは、私を殺してきたが、私は感じて本当に簡単でなければなりません。

ありがとうございます!

答えて

8

これは動作するはずです:

personalposts = db.GqlQuery("select * from PersonalPost where user_id =:1 order by created desc limit 30",user_id) 

GqlQuery構文例:

q = GqlQuery("SELECT * FROM Song WHERE composer = 'Lennon, John'") 

q = GqlQuery("SELECT __key__ FROM Song WHERE composer = :1", "Lennon, John") 

q = GqlQuery("SELECT * FROM Song WHERE composer = :composer", composer="Lennon, John") 

ソース:https://developers.google.com/appengine/docs/python/datastore/gqlqueryclass

+0

ah great!だから:1表記は、それがGQLの後ろにリストされている最初のパラメータだと言っていますか? – clifgray

2

のパラメータは、位置または名前でバインドすることができ、GqlQueryクラスのドキュメントを見て詳細については。

ですから、このようなクエリを作成

personalposts = db.GqlQuery("select * from PersonalPost where user_id = :1 order by created desc limit 30", user_id) 

または

personalposts = db.GqlQuery("select * from PersonalPost where user_id = :id order by created desc limit 30", id = user_id) 
1

を行うことができます:

query = PersonalPost.all() 
query.filter('user_id', user_id) 
query.order('-created') 

または使用: '%s' の周りの単一引用符WITHを!

personalposts = db.GqlQuery("select * from PersonalPost where user_id = '%s' order by created desc" % user_id) 
+0

は技術的に優れていますか?私は両方とも働くことができます。もう一方よりも速いのですか? – clifgray

+0

動作しませんか?クエリ結果をフェッチしましたか? – voscausa

+0

私は現時点でこれを試しましたが、実際には一重引用符をスキップして、二重引用符の後に変数%sを置くだけです(カンマもありません)。 – Belhor

関連する問題