Flask · 数据库操作 2026-08-30

python 连接数据库 创建db.py — 连接 & 查询

import pymysql def get_conn(): return pymysql.connect( host='localhost', user='root', password='159874', database='mytest', charset='utf8' ) def query_data(sql): conn = get_conn() try: cursor = conn.cursor(pymysql.cursors.DictCursor) cursor.execute(sql) return cursor.fetchall() finally: conn.close() def insert_or_update_data(sql): conn = get_conn() try: cursor = conn.cursor() cursor.execute(sql) conn.commit() finally: conn.close() # 测试插入 & 查询 if __name__ == "__main__": sql = "insert user (name, sex, age, email) values('daming', 'man', 30, 'daming@qq.com')" insert_or_update_data(sql) sql = "select * from user" datas = query_data(sql) import pprint pprint.pprint(datas)

app.py — Flask 路由 & 模板

from flask import Flask, render_template, request import db app = Flask(__name__) @app.route('/') def hello(): return 'Hello, World!' @app.route('/biaodan') def biaodan(): return render_template("biaodan.html") @app.route("/do_add_user", methods=['POST']) def do_add_user(): name = request.form.get("name") sex = request.form.get("sex") age = request.form.get("age") email = request.form.get("email") sql = f""" insert into user (name, sex, age, email) values ('{name}', '{sex}', {age}, '{email}') """ db.insert_or_update_data(sql) return "tianjia success" @app.route("/show_users") def show_users(): sql = "select id, name from user" datas = db.query_data(sql) return render_template("show_users.html", datas=datas) @app.route("/user/") def show_user(user_id): sql = "select * from user where id=" + user_id datas = db.query_data(sql) user = datas[0] return render_template("show_user.html", user=user) if __name__ == '__main__': app.run(debug=True)

templates / 三个 HTML

biaodan.html — 表单提交

<body> <div class="card"> <h2>📋 简单表单</h2> <form action="/do_add_user" method="POST"> <input type="text" name="id" placeholder="id"> <input type="text" name="name" placeholder="姓名"> <input type="number" name="age" placeholder="年龄"> <input type="radio" name="sex" value="男" checked> 男 <input type="radio" name="sex" value="女"> 女 <input type="email" name="email" placeholder="邮箱"> <button type="submit">提交</button> </form> </div> </body>

show_users.html — 用户列表

<body> <div> {% for user in datas %} <div> ID:{{ user.id }},姓名:{{ user.name }}, <a href="/user/{{ user.id }}">详情</a> </div> {% endfor %} </div> </body>

show_user.html — 单条详情

<body> <div> ID:{{ user.id }}, 姓名:{{ user.name }}, 年龄:{{ user.age }}, 性别:{{ user.sex }}, 邮箱:{{ user.email }} </div> </body>

运行 & 交互流程

启动 Flaskpython app.py → 访问 http://127.0.0.1:5000/biaodan

数据表 user 结构

id (INT, 自增)
name (VARCHAR)
sex (VARCHAR)
age (INT)
email (VARCHAR)
Flask 与 MySQL 协作
· db.py 封装连接与 SQL 执行,app.py 专注路由与逻辑。
· 模板 (Jinja2) 渲染数据,实现前后端分离的雏形。