2013-02-08 38 views
11

Tôi muốn gửi một truy vấn tới mysql và tìm nạp một mảng. Nhưng tuy nhiên tôi làm điều đó tôi không thể làm cho nó hoạt động. Đây là mã của tôi:Chức năng xem không trả về một phản hồi

@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] 

Nó luôn luôn nói, view function did not return a response. Tôi đang làm gì sai?

+0

1) Sửa lỗi thụt lề trong mã đã đăng của bạn và 2) chạy cùng một truy vấn trong DB của bạn và xem điều gì nói –

+0

Vui lòng cung cấp cho chúng tôi toàn bộ truy nguyên và khung web bạn sử dụng. –

+0

@MartijnPieters Tôi đang dùng đâm vào Flask và MySQL :) –

Trả lời

15

Bình ném ngoại lệ này vì chế độ xem auth không trả lại bất kỳ điều gì. Quay trở lại một phản ứng từ auth xem của bạn:

return 'Some response' 

Để trả lại kết quả MySQL, có lẽ tham gia các hàng với nhau thành một chuỗi:

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

hoặc xác định một mẫu và return the rendered template.

Lưu ý rằng bạn thực sự không muốn sử dụng nội suy chuỗi cho thông số username, đặc biệt là trong ứng dụng web. Sử dụng tham số SQL thay thế:

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

Bây giờ, máy khách cơ sở dữ liệu sẽ trích dẫn bạn và ngăn chặn các cuộc tấn công SQL injection. Nếu bạn sử dụng nội suy chuỗi, this will happen.

(Nếu đây là cơ sở dữ liệu phong nha (ví dụ không phải MySQL) cơ sở dữ liệu có thể lấy câu lệnh SQL chung chung và tạo kế hoạch truy vấn cho nó, sau đó sử dụng lại kế hoạch nhiều lần khi bạn thực hiện truy vấn đó nhiều lần; nội suy chuỗi bạn muốn ngăn chặn điều đó.)

+0

vâng bạn đúng, làm sao tôi có thể trả về giá trị khớp từ sql? – saidozcan

+0

@Gandalf bạn có vẻ mới mẻ với điều này - Tôi khuyên bạn nên sử dụng ORM - điều này sẽ làm cho cuộc sống dễ dàng hơn nhiều - hãy đọc http://packages.python.org/Flask-SQLAlchemy/ –

+0

yes im beginner with python, i sẽ đưa ra lời khuyên của bạn, cảm ơn bạn :) – saidozcan

Các vấn đề liên quan