You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用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. 测试运行

  1. 启动本地MySQL服务
  2. 执行python app.py启动Flask应用
  3. 打开浏览器访问http://localhost:5000,填写表单并提交,之后去MySQL的event_db.events表中查看,就能看到插入的数据了

关键注意事项

  • 务必替换代码中的MySQL用户名和密码为你自己的实际信息
  • 全程使用参数化查询,这是防范SQL注入的核心手段,绝对不要直接拼接SQL语句
  • 操作数据库后一定要关闭游标和连接,避免资源泄漏
  • 如果需要扩展更多表单字段,只需要在HTML中添加对应输入框,然后修改Python代码中的数据获取逻辑和INSERT语句即可

内容的提问来源于stack exchange,提问作者Dawn17

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.21 07:33:41