2012-06-24 9 views
6

¿Cómo paso una variable de cadena a GQL con python? Puedo hacerlo bien en SQL, pero simplemente no está funcionando. aquí es lo que tengo:pase una variable de cadena en una consulta gql

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

Esto me ha estado matando, pero debería ser realmente simple, me siento.

Gracias!

Respuesta

8

Esto debería funcionar:

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

GqlQuery ejemplos de sintaxis:

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

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

+0

ah great! entonces la notación: 1 solo dice que ese es el primer parámetro enumerado después del GQL? – clifgray

2

parámetros pueden estar unidos por la posición o nombre, mirar la documentación GqlQuery clase para más información.

por lo que podría hacer

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

o

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

Crear una consulta como esta:

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

o uso: CON comillas simples '% s' !!

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

es uno de estos técnicamente mejor? Puedo hacer que ambos trabajen. es uno más rápido que el otro? – clifgray

+0

¿No funciona ?: ¿Obtuviste los resultados de la consulta? – voscausa

+0

Lo he intentado por el momento y realmente necesita saltear las comillas simples ahora y simplemente poner% s luego la variable después de que termina la comilla doble (no hay coma allí también). – Belhor

Cuestiones relacionadas