如何在Web框架上显示数据库?

时间:2019-08-13 06:28:44

标签: python flask

我想使用flask模块从Web框架上的.db文件显示数据库的内容。但是,只能在Web框架上显示行标题。 .db文件中数据库的内容无法在Web框架上加载。有人可以帮我吗?谢谢。 这是我的代码:

from flask import Flask, render_template
import sqlite3

app = Flask(__name__)

def connect_db(db):
    con = sqlite3.connect(db) 
    return  con.cursor()

@app.route('/') 
def index():    
    db ='mcu_aurix_git.db'
    cur = connect_db(db)
    cur.execute("SELECT * FROM mcu_aurix")
    data = cur.fetchall()
    return render_template('flask.html', rows=data)

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

flask.html:

<table class="table table-hover">
    <thead>
    <tr>
        <th>project</th>
        <th>branch</th>
        <th>id</th>
        <th>number</th>
        <th>subject</th>
        <th>owner_name</th>
        <th>owner_email</th>
        <th>owner_username</th>
        <th>url</th>
        <th>commitMessage</th>
        <th>createdOn</th>
        <th>lastUpdated</th>
        <th>open</th>
        <th>status</th>
        <th>current_date</th>          
    </tr>
    </thead>
    <tbody>
        {% for row in rows %}
            <tr>
                <td>{{row.project_name}}</td>
                <td>{{row.branch_id}}</td>
                <td>{{row.id_id}}</td>
                <td>{{row.num_number}}</td>
                <td>{{row.subject_name}}</td>
                <td>{{row.owner_name}}</td>
                <td>{{row.owner_email}}</td>
                <td>{{row.owner_username}}</td>
                <td>{{row.url_name}}</td>
                <td>{{row.commitMessage_name}}</td>
                <td>{{row.num_createdOn}}</td>
                <td>{{row.num_lastUpdated}}</td>
                <td>{{row.num_open}}</td>
                <td>{{row.status_name}}</td>
                <td>{{row.current_date}}</td>
            </tr>
        {% endfor %}
    </tbody>
</table>

我的代码中是否缺少任何内容?希望任何人都可以在这方面帮助我。提前致谢!

1 个答案:

答案 0 :(得分:0)

您没有将rows变量传递给html页面。

return render_template('flask.html', data=data)

您只传递了data变量。

如果要在HTML页面中使用rows,则需要使用

return render_template('flask.html', rows=data)

还有一件事,

{{row.project_name}}

您不能像这样获得project_name的值,需要使用索引值(行号从0开始)。就像

{{row[0]}}

您可以使用下面的<td>代码来代替为每个col值手动创建tbody

<tbody>
    {% for row in rows %}
        <tr>
            {% for col in row %}
                <td> {{ col }} </td>
            {% endfor %}
        </tr>
    {% endfor %}
</tbody>

希望有帮助!