2016-04-01 7 views
0

フラスコにローカルホスト上のDBの仕事をすることはできませんし、まだ動作していない:私は、MySQLのCLIを使用して、私のデシベルにローカルホストに接続しようとしていは、私が今、最も基本的なコードを使用しています

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) 

とそれはうまく動作します。私は入力にmysql -u rootを使用しています。それを受け入れると使用する人が使用され、それがうまく動作してselect文を実行できます。ここで

は私が取得エラーです:

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 

しかし、あなたは、すぐに私はフラスコを使用して、見ることができるように、私はこのエラーを取得します。

答えて

2

この問題は、flaskext.mysqlとdb connectionとは関係ありません。 @app.route('/test')ステートメントの中で、データベースから選択した結果のタプルを返します。 フラスコでは、何かを返すべきですappropriate

1

ビューでは、テンプレートまたはHTMLコード(文字列形式)が返されます。私はあなたのデータベースクエリの結果を表示しようとしているので、それを行う適切な方法は、render_template()関数を使用してテンプレートを介してデータを渡すことです。 ここをクリックしてください:http://flask.pocoo.org/docs/0.10/quickstart/#rendering-templates

関連する問題