2016-07-24 14 views
-2

Ich möchte zwei Auswahlabfrage in einer Funktion gleichzeitig haben.Wie 2 Abfragen in einer Funktion haben?

In shop.html:

{% for each in result %} 
    {{ each }}<br> 
{% endfor %} 


{% for each in result2 %} 
    {{ each }}<br> 
{% endfor %} 

In app.py:

@app.route('/shop/<data>') 
def shop(data): 
    db = MySQLdb.connect("localhost","myusername","mypassword","mydbname") 

    cursor = db.cursor() 
    cursor2 = db.cursor() 


    query_string = "SELECT * from users" 
    query_string2 = "SELECT * from people" 


    cursor.execute(query_string) 
    cursor2.execute(query_string2) 


    result = cursor.fetchall() 
    result2 = cursor.fetchall() 

    db.close() 


    return render_template('shop.html', result=result, result2=result2) 

Aber es funktioniert nicht. Es erhält und druckt die erste ausgewählte Abfrage. Wie kann ich es beheben?

+0

Ihr Code funktioniert einwandfrei; Bist du * sicher *, dass die zweite Auswahlabfrage irgendwelche Daten zurückgibt? Mit anderen Worten, haben Sie versucht, * nur * die zweite Abfrage auszuführen, oder versucht zu sehen, was passiert ist, als Sie sie ausgetauscht haben? –

+0

ja jede Abfrage funktioniert gut, aber nicht, wenn sie beide in einer Funktion zu sammeln sind. – niloofar

+1

Ja, Sie haben einen Tippfehler. Der zweite Aufruf sollte 'result2 = cursor2.fetchall()' sein. –

Antwort

1

Sie haben versucht, von ein der Cursor zweimal zu holen:

result = cursor.fetchall() 
result2 = cursor.fetchall() 

Beachten Sie, dass cursor.fetchall() in beide Fälle genannt. Sie wollten, dass das zweite Ergebnis vom zweiten Cursor kommt:

result = cursor.fetchall() 
result2 = cursor2.fetchall() 
+0

Ja richtig, war nur ein kleiner Fehler. – niloofar