如何配置MySQL数据库存储Flask表单提交的name与email数据
Flask表单数据存入MySQL实现方案
1. 初始化MySQL数据库
先登录你的MySQL服务,创建存储数据的数据库和表:
CREATE DATABASE IF NOT EXISTS form_db; USE form_db; CREATE TABLE IF NOT EXISTS users ( id INT AUTO_INCREMENT PRIMARY KEY, name VARCHAR(100) NOT NULL, email VARCHAR(100) NOT NULL UNIQUE );
这个表用自增的id作为主键,name和email设为必填,email加唯一约束防止重复提交。
2. 安装依赖包
在你的Python环境中安装所需的库:
pip install flask flask-mysql
3. Flask后端代码(app.py)
这段代码负责配置数据库连接、处理表单提交请求,并将用户输入的数据插入MySQL:
from flask import Flask, render_template, request, redirect, url_for from flask_mysql import MySQL app = Flask(__name__) # 配置MySQL连接信息 app.config['MYSQL_HOST'] = 'localhost' app.config['MYSQL_USER'] = '你的MySQL用户名' app.config['MYSQL_PASSWORD'] = '你的MySQL密码' app.config['MYSQL_DB'] = 'form_db' mysql = MySQL(app) @app.route('/', methods=['GET', 'POST']) def index(): if request.method == 'POST': # 从提交的表单中获取用户输入的name和email name = request.form['name'] email = request.form['email'] # 执行数据库插入操作 cur = mysql.connection.cursor() cur.execute("INSERT INTO users (name, email) VALUES (%s, %s)", (name, email)) mysql.connection.commit() cur.close() # 重定向回表单页,避免刷新重复提交 return redirect(url_for('index')) # GET请求时渲染表单页面 return render_template('index.html') if __name__ == '__main__': app.run(debug=True)
核心逻辑:通过request.form直接获取用户在HTML表单中输入的数据,而非手动硬编码,这正是你需要的实现方式。
4. HTML表单页面(templates/index.html)
在项目根目录创建templates文件夹,新建index.html文件:
<!DOCTYPE html> <html> <head> <title>用户信息收集</title> </head> <body> <h2>填写你的信息</h2> <form method="POST"> <div> <label>姓名:</label> <input type="text" name="name" required> </div> <div style="margin: 10px 0;"> <label>邮箱:</label> <input type="email" name="email" required> </div> <button type="submit">提交</button> </form> </body> </html>
注意:表单的method设为POST,输入框的name属性要和后端request.form中调用的键完全一致,required属性实现前端必填验证。
5. 验证数据是否存入数据库
- 运行
app.py,访问http://localhost:5000 - 填写表单并提交
- 登录MySQL,执行查询语句:
SELECT * FROM form_db.users;
此时就能看到你提交的name和email已经存储在数据库表中了。
额外提示
- 确保MySQL服务处于运行状态
- 替换代码中MySQL的用户名和密码为你自己的账号信息
- 可以添加错误捕获逻辑,比如处理邮箱重复提交时的异常,提升程序稳定性
内容的提问来源于stack exchange,提问作者Moko
相关产品推荐
相关产品推荐

