首页 > 解决方案 > Python和Flask,在html页面上显示mysql DB中的数据

问题描述

每次我尝试在html页面上显示我的 MySQL 数据库中的数据时,它只会显示记录的第一列或仅显示列本身的名称。

例如:

我的数据库

D b

id  names
1   Harry
2   Snape

主文件

@app.route("/db", methodes = ["POST", "GET"])
def db():
    if request.method == "POST":
        cur = mysql.connection.cursor(MySQLdb.cursors.DictCursor)
        cur.execute("SELECT names FROM db WHERE id = 1")
        output = cur.fetchone()
        cur. close 
        return render_template("db.html", data = output)
    else:
        return render_template("db.html")

db.html

{% extends "base.html" %}
{% block title %}db{% endblock %}

{% block content %}
<form method="POST">
<input type="submit" value="show data">
</form>

<!-- Output 1 -->
<p>{{data}}</p>

<!-- Output 2 -->
{% for i in data %}
    <p>{{i}}</p>
{% endfor %}

<!-- Output 3 -->
{% for i in data %}
    <p>{{i[0]}}</p>
{% endfor %}

{% endblock %}

输出 1 = {'names': 'Harry'}

输出 2 = 名称

输出 3 = n

我只想获取记录,而不是列名,我该怎么做(输出 = Harry

我对这一切都很陌生,我很高兴能有一个简短的解释:)

标签: pythonmysqlflask

解决方案


您可以在 Python 中搜索 Dictionary 。

这是您的 db.html 代码中的一些更改:

{% extends "base.html" %}
{% block title %}db{% endblock %}

{% block content %}
<form method="POST">
<input type="submit" value="show data">
</form>

<!-- Output 1 -->
<p>{{data['names']}}</p>

<!-- Output 2 -->
{% for key, value in data.items() %}
    <p>{{value}}</p>
{% endfor %}


{% endblock %}

推荐阅读