2016-04-01 7 views
0

ich jetzt bin mit dem grundlegendsten Code und es funktioniert immer noch nicht:kann nicht die db Arbeit auf localhost machen mit Kolben

from flask import Flask, render_template 
from flaskext.mysql import MySQL 

mysql = MySQL() 
app = Flask(__name__) 

# MySQL configurations 
app.config['MYSQL_DATABASE_USER'] = 'root' 
app.config['MYSQL_DATABASE_PASSWORD'] = '' 
app.config['MYSQL_DATABASE_DB'] = 'people' 
app.config['MYSQL_DATABASE_HOST'] = 'localhost' 
mysql.init_app(app) 

@app.route('/test') 
def test(): 
    conn = mysql.connect() 
    cursor = conn.cursor() 
    sql = "SELECT * from tbl_user" 
    cursor.execute(sql) 
    results = cursor.fetchall() 
    cursor.close() 
    conn.close() 
    return results 

if __name__ == "__main__": 
    app.run(debug=True) 

Ich habe versucht, auf localhost zu meinem db über Mysql cli zu verbinden und es funktioniert gut. Ich habe mysql -u root verwendet, um es einzugeben, und es akzeptiert, dann benutze ich Leute und es funktioniert gut, dann kann ich Select-Anweisungen tun. Hier

ist der Fehler, den ich bekommen:

Traceback (most recent call last): 
    File "C:\Python27\lib\site-packages\flask\app.py", line 1836, in __call__ 
    return self.wsgi_app(environ, start_response) 
    File "C:\Python27\lib\site-packages\flask\app.py", line 1820, in wsgi_app 
    response = self.make_response(self.handle_exception(e)) 
    File "C:\Python27\lib\site-packages\flask\app.py", line 1403, in handle_exception 
    reraise(exc_type, exc_value, tb) 
    File "C:\Python27\lib\site-packages\flask\app.py", line 1817, in wsgi_app 
    response = self.full_dispatch_request() 
    File "C:\Python27\lib\site-packages\flask\app.py", line 1478, in full_dispatch_request 
    response = self.make_response(rv) 
    File "C:\Python27\lib\site-packages\flask\app.py", line 1577, in make_response 
    rv = self.response_class.force_type(rv, request.environ) 
    File "C:\Python27\lib\site-packages\werkzeug\wrappers.py", line 847, in force_type 
    response = BaseResponse(*_run_wsgi_app(response, environ)) 
    File "C:\Python27\lib\site-packages\werkzeug\wrappers.py", line 57, in _run_wsgi_app 
    return _run_wsgi_app(*args) 
    File "C:\Python27\lib\site-packages\werkzeug\test.py", line 871, in run_wsgi_app 
    app_rv = app(environ, start_response) 
TypeError: 'tuple' object is not callable 

Aber wie Sie sehen können, sobald ich Flask verwenden, bekomme ich diesen Fehler.

Antwort

2

Das Problem hat nichts mit flaskext.mysql und db Verbindung zu tun. Innerhalb der @app.route('/test') Anweisung geben Sie ein Tupel zurück, das das Ergebnis einer Auswahl aus der Datenbank ist. In Flask sollten Sie etwas zurückgeben appropriate.

1

Ihre Ansicht sollte eine Vorlage oder einen HTML-Code (im String-Format) zurückgeben. Ich schätze, Sie versuchen, die Ergebnisse Ihrer Datenbankabfrage zu zeigen, also verwenden Sie die render_template() Funktion, um die Daten über die Vorlage zu übergeben. Werfen Sie einen Blick hier: http://flask.pocoo.org/docs/0.10/quickstart/#rendering-templates

Verwandte Themen