Parametr vazbu použitím GQL v Google App Engine

hlasů
2

Dobře, takže mám tento režim:

class Posts(db.Model):
  rand1 = db.FloatProperty()
  #other models here

a tento řadič:

class Random(webapp.RequestHandler):
  def get(self):    
      rand2 = random.random()
      posts_query = db.GqlQuery(SELECT * FROM Posts WHERE rand1 > :rand2 ORDER BY rand LIMIT 1)
      #Assigning values for Django templating
      template_values = {
          'posts_query': posts_query,
           #test purposes
          'rand2': rand2,
          }

      path = os.path.join(os.path.dirname(__file__), 'templates/random.html')
      self.response.out.write(template.render(path, template_values))

Takže když se přidá entity se generuje náhodná float (0-1), a pak, když musím chytit náhodný entitu Chci, aby bylo možné jen pomocí jednoduchého SELECT dotazu. chyby, které by se:

BadArgumentError('Missing named arguments for bind, requires argument rand2',)

Nyní to funguje, když půjdu:

posts_query = db.GqlQuery(SELECT * FROM Posts WHERE rand1 > 1 ORDER BY rand LIMIT 1)

Tak jasně můj dotaz je špatně; jak se dá použít proměnnou v prohlášení, kde: S

Položena 27/08/2009 v 04:28
zdroj uživatelem
V jiných jazycích...                            


1 odpovědí

hlasů
3

Nahradit:

 "...WHERE rand1 > :rand2 ORDER BY rand LIMIT 1")

s:

  "...WHERE rand1 > :rand2 ORDER BY rand LIMIT 1", rand2=rand2)

Nebo

  "...WHERE rand1 > :1 ORDER BY rand LIMIT 1", rand2)

Pro více informací viz: „ The Gql třídy dotazů

Legrační je, že jsem se právě tohle asi před 2 hod naučil: P

Odpovězeno 27/08/2009 v 04:40
zdroj uživatelem

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more