2017-10-21 10 views
-2

まず、ORMソリューションの使用価値を理解し、SQL-Alchemyを後で使用します。Flask mysqlがSQLコマンドに応答する(SQL-Alchemyを使用しない)

私はフラスコをインストールしており、フラスコ - mysqlを使用しています。

SQL "desc"コマンドの結果を取得する方法がわかりません。ここで

は、私が働いているコードです:

from flask import Flask, render_template, request, redirect, jsonify 
import requests 
from flaskext.mysql import MySQL 

app = Flask(__name__) 

@app.route("/") 
def main(): 
    return render_template('login.html') 

@app.route("/login", methods=['POST']) 
def login(): 
    #username = request.form['username'] #not using the form fields yet 
    #password = request.form['password'] 
    mysql = MySQL() 
    app.config['MYSQL_DATABASE_USER'] = '<my user here>' 
    app.config['MYSQL_DATABASE_PASSWORD'] = '<password here>' 
    app.config['MYSQL_DATABASE_DB'] = '<database name here>' 
    app.config['MYSQL_DATABASE_HOST'] = '<database server IP address here>' 
    mysql.init_app(app) 

    conn = mysql.connect() 
    cursor = conn.cursor() 
    #cursor = mysql.connection.cursor() #invalid code, at least for this version of flask-mysql 
    cursor.execute("desc user;") 
    result = jsonify(cursor.fetchall()) 

    #row = cursor.fetchone() 
    return "<!DOCTYPE html><html><body>" + str(result)+ "</body></html>" 

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

結果の内容は、「レスポンス268バイト[200 OKですので、それは、データベースへの接続にログインして、[OK] DESCコマンドを送信しているように見えます] "(ブラウザーでレスポンスを取得した後、ページソースコードを見れば分かります)。

「このコマンドを実行しましたか?」だけでなく、結果(表の説明)を得る方法はありますか?

ありがとうございます。

+0

テンプレートは、ポストアクションを実行するフォームを持つ単なるHTMLページです。フォームには、ユーザー名とパスワードのフィールドとボタンがあります。 – JakeJ

+0

ユーザーは私のデータベースのtablenameです。 – JakeJ

+0

あなたはAJAXをやろうとしていますか?簡単な方法で列のプロパティをレンダリングするだけですか? – PRMoureu

答えて

0

すべてのレコードを取得して、それらを降順でソートするとします。あなたはこれを試みるかもしれません。

from flask_mysqldb import MySQL 

app.config['MYSQL_HOST'] = 'localhost' 
app.config['MYSQL_USER'] = 'root' 
app.config['MYSQL_PASSWORD'] = 
app.config['MYSQL_DB'] = 
app.config['MYSQL_CURSORCLASS'] = 'DictCursor' 


# initialize mysql 
mysql = MySQL(app) 

... 

@app.route('/posts') 
def posts(): 
    cur = mysql.connection.cursor() 
    result = cur.execute('SELECT * FROM posts ORDER BY postdate DESC ') 
    posts = cur.fetchall() 

    if result > 0: 
     return render_template('posts.html', posts=posts) 
    else: 
     message = 'I shouldn't find any post' 
     return render_template('posts.html', message=message) 

    cur.close 
+0

OK。私はMySQLサーバ上で管理者を持っており、ユーザテンプレートを作成している間にテーブルを見るために別のクライアントに接続することができます。私は、テーブルを自分自身で作成したとしても、何らかの理由でクエリを実行する前に、テーブルを自動的にデシジョンするという習慣があると思います。間違いなく奇妙な習慣。 私はちょうど私がdesc tableコマンドから結果を得ることができなかったことが興味深いことを発見しました。 – JakeJ

+0

もちろん、あなたのテーブルには "postdate"という名前の列があることを知る必要があります。あなたがテーブルの構造を知らない場合、あなたは運がありません。 – JakeJ

関連する問題