如何使用Python-Flask将HTML表单数据插入MySQL数据库
实现Flask将HTML表单数据插入MySQL数据库的完整方案
没问题,我来一步步带你完成这个功能,咱们从环境准备到代码实现一步步来:
1. 安装必要依赖
首先确保你安装了Flask和MySQL的Python驱动,打开终端执行:
pip install flask mysql-connector-python
2. 准备MySQL数据库
先登录你的MySQL服务器,创建一个数据库和存储事件信息的表:
CREATE DATABASE event_db; USE event_db; CREATE TABLE events ( id INT AUTO_INCREMENT PRIMARY KEY, event_name VARCHAR(255) NOT NULL, sport VARCHAR(50) NOT NULL, location VARCHAR(255) NOT NULL );
3. 修改HTML表单
你的原表单缺少提交方法和提交地址,需要补充method="POST"和action="/submit",还要加上提交按钮,同时添加required属性确保必填字段:
<form method="POST" action="/submit"> Event Name:<br> <input type="text" name="eventname" required> <br> Sports:<br> <select name="dropdown" required> <option value="soccer">Soccer</option> <option value="basketball">Basketball</option> <option value="baseball">Baseball</option> <option value="football">Football</option> </select> <br> Location:<br> <input type="text" name="location" required> <br><br> <input type="submit" value="Submit Event"> </form>
4. 编写Flask应用代码
创建一个app.py文件,内容如下(记得替换你的MySQL用户名和密码):
from flask import Flask, render_template, request, redirect, url_for import mysql.connector from mysql.connector import Error app = Flask(__name__) # 封装MySQL连接函数 def create_connection(): connection = None try: connection = mysql.connector.connect( host='localhost', database='event_db', user='your_username', # 替换为你的MySQL用户名 password='your_password' # 替换为你的MySQL密码 ) if connection.is_connected(): print("成功连接到MySQL数据库") except Error as e: print(f"连接错误: {e}") return connection # 渲染表单页面 @app.route('/') def index(): return render_template('index.html') # HTML文件放在templates文件夹下 # 处理表单提交逻辑 @app.route('/submit', methods=['POST']) def submit_event(): if request.method == 'POST': # 获取表单提交的数据 event_name = request.form['eventname'] sport = request.form['dropdown'] location = request.form['location'] # 插入数据到数据库 connection = create_connection() if connection: cursor = connection.cursor() try: # 用参数化查询避免SQL注入 query = "INSERT INTO events (event_name, sport, location) VALUES (%s, %s, %s)" values = (event_name, sport, location) cursor.execute(query, values) connection.commit() print(f"成功插入{cursor.rowcount}条记录") except Error as e: print(f"插入数据错误: {e}") finally: # 关闭游标和连接,释放资源 cursor.close() connection.close() # 提交后重定向回表单页面 return redirect(url_for('index')) if __name__ == '__main__': app.run(debug=True)
5. 项目结构
按照Flask的标准目录结构整理你的项目:
your_project/ ├── app.py └── templates/ └── index.html # 存放修改后的HTML表单文件
6. 测试运行
- 启动本地MySQL服务
- 执行
python app.py启动Flask应用 - 打开浏览器访问
http://localhost:5000,填写表单并提交,之后去MySQL的event_db.events表中查看,就能看到插入的数据了
关键注意事项
- 务必替换代码中的MySQL用户名和密码为你自己的实际信息
- 全程使用参数化查询,这是防范SQL注入的核心手段,绝对不要直接拼接SQL语句
- 操作数据库后一定要关闭游标和连接,避免资源泄漏
- 如果需要扩展更多表单字段,只需要在HTML中添加对应输入框,然后修改Python代码中的数据获取逻辑和INSERT语句即可
内容的提问来源于stack exchange,提问作者Dawn17
相关产品推荐
相关产品推荐

