2013-02-08 17 views
11

Chcę wysłać zapytanie do mysql i pobrać tablicę. Ale jakkolwiek to robię, nie mogę sprawić, żeby działało. Oto mój kod:Funkcja widoku nie zwróciła odpowiedzi

@app.route('/auth',methods=['GET','POST']) 
def auth(): 
    username = request.form['username'] 
    password = request.form['password'] 

    cur = db.cursor() 
    cur.execute("SELECT * FROM tbl_user WHERE username = '%s' " % username) 

    results = cur.fetchall() 

    for row in results: 
     print row[0] 

Zawsze mówi: view function did not return a response. Co ja robię źle?

+0

1) Napraw wcięcie w opublikowanym kodzie i 2) uruchom to samo zapytanie w DB i zobacz, co to jest napisane –

+0

Przekaż nam pełne informacje zwrotne, a struktura sieci jest za pomocą. –

+0

@MartijnPieters Robię ukłucie w Flask i MySQL :) –

Odpowiedz

15

Flask zgłasza ten wyjątek, ponieważ twój widok auth niczego nie zwrócił. Zwraca odpowiedź od Pana zdaniem auth:

return 'Some response' 

Aby powrócić wyników MySQL, może przyłączyć się wiersze w jeden ciąg:

cur.execute("SELECT * FROM tbl_user WHERE username = '%s' " % username) 
return '\n'.join([', '.join(r) for r in cur]) 

lub zdefiniować szablon i return the rendered template.

Pamiętaj, że naprawdę nie chcesz używać interpolacji ciągów dla swojego parametru username, , zwłaszcza w aplikacji internetowej. Zamiast tego użyj parametrów SQL:

cur.execute("SELECT * FROM tbl_user WHERE username = %s", (username,)) 

Teraz klient bazy danych zrobi cytowanie za Ciebie i zapobiegnie atakom SQL injection. Jeśli używasz interpolacji ciągów znaków, this will happen.

(Jeśli była to przyzwoita baza danych (np. Nie MySQL), baza danych może pobrać teraz generyczne zapytanie SQL i utworzyć dla niego plan kwerendy, a następnie ponownie użyć planu wielokrotnie podczas wykonywania tego kwerendy wiele razy; interpolacja ciągów, które by to uniemożliwiło).

+0

tak masz rację, jak mogę zwrócić dopasowaną wartość z sql? – saidozcan

+0

@Gandalf wydaje ci się nowy - polecam użyć ORM - to znacznie ułatwi życie - przeczytaj http://packages.python.org/Flask-SQLAlchemy/ –

+0

yes im beginner with python, i wezmę twoją radę, dziękuję :) – saidozcan

Powiązane problemy