2017-10-21 83 views
-2

首先,我理解使用ORM解决方案的价值,并在以后使用SQL-Alchemy。Flask mysql获得对SQL命令的响应(不使用SQL-Alchemy)

我已经安装了Flask,并使用flask-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我运行这个命令”?

谢谢。

+0

该模板只是一个简单的HTML页面,其中包含一个表单,用于执行发布操作。该表格有一个用户名和密码字段和一个按钮。 – JakeJ

+0

用户是我数据库中的表名。 – 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

好的。我在MySQL服务器上有管理员,并且可以将其他客户端连接到它,以便在制作用户模板时查看表。我想我只是习惯于在出于某种原因查询它之前在任何表上自动执行desc,即使我早些时候自己创建表。绝对是一个奇怪的习惯。 我刚刚发现有趣的是,我无法从desc表命令中得到结果。 – JakeJ

+0

当然,在这种情况下,你必须知道你的表有一个名为“postdate”的列。如果你不知道桌子的结构,那你倒霉了。 – JakeJ