Frage

Okay, so habe ich diesen Modus:

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

und dieser Controller:

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

Also, wenn ein Unternehmen einen zufälligen Schwimmer hinzugefügt wird, erzeugt (0-1) und dann, wenn ich brauche eine zufällige Einheit zu packen ich nur in die Lage sein will, eine einfache SELECT-Abfrage zu verwenden. Es Fehler mit:

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

Jetzt Dies funktioniert, wenn ich gehe:

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

So klar meine Frage ist falsch; wie kann man eine Variable in einer where-Anweisung: S

War es hilfreich?

Lösung

Stellvertreter:

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

mit:

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

oder

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

Für weitere Informationen siehe: „ Die GQL Abfrageklasse "

Das Komische ist, dass ich das gerade gelernt haben ca. 2 Stunden vor: P

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top