2012-06-24 10 views
6

Wie in der Welt übergebe ich eine String-Variable in GQL mit Python ?? Ich kann es in SQL gut machen, aber es funktioniert einfach nicht. hier ist das, was ich habe:übergeben Sie eine String-Variable in eine gql-Abfrage

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

Dies wurde mir zu töten, sollte aber wirklich einfach sein, ich fühle.

Danke!

Antwort

8

Dies sollte funktionieren:

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

GqlQuery Syntax Beispiele:

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") 

Quelle:https://developers.google.com/appengine/docs/python/datastore/gqlqueryclass

+0

ah großartig! Also sagt die: 1 Notation nur, dass das der erste Parameter ist, der nach der GQL aufgelistet ist? – clifgray

2

Parameter von Position oder den Namen gebunden werden können, sehen Sie die GqlQuery Klasse Dokumentation Für mehr Information.

So könnte man

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

oder

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

Erstellen Sie eine Abfrage wie folgt tun:

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

oder -nutzung: MIT einfachen Anführungszeichen '% s' !!

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

ist einer dieser technisch besser? Ich kann beide zur Arbeit bringen. ist einer schneller als der andere? – clifgray

+0

Funktioniert nicht ?: Haben Sie die Abfrageergebnisse abgerufen? – voscausa

+0

Ich habe das im Moment versucht und Sie müssen jetzt die einfachen Anführungszeichen überspringen und einfach% s setzen, dann endet die Variable nach doppelten Anführungszeichen (auch kein Komma). – Belhor