flask - Display database from python to html

You can pass your data using render_template() like this:

cur = con.cursor()
cur.execute("SELECT * FROM dataset")
data = cur.fetchall()
render_template('template.html', data=data)

Then in your template, iterate over the rows, for example you could render table rows for each row:

{% for item in data %}
<tr>
    <td>{{item[0]}}</td>
    <td>{{item[1]}}</td>
    ...
</tr>
{% endfor %}

render_template allows you to pass variables to html, and jinja2 help you to manipulate it. You only need to format your query result and send it within render_template

Example

app.py

@app.route('/test')
def test_route():
    user_details = {
        'name': 'John',
        'email': '[email protected]'
    }

    return render_template('test.html', user=user_details)

test.html

<!DOCTYPE html>
<html>
    <head>
        <title>test</title>
    </head>
    <body>
        <!-- use {{}} to access the render_template vars-->
        <p>{{user.name}}</p>
        <p>{{user.email}}</p>
    </body>
</html>

to make the most of jinja2, take a look at his Documentation