在前端代码中,model字段的name属性为"model",但是在后端代码中获取该字段的值时,使用的是request.form.get("model"),这里的"model"应该改为"model[]",即可获取到多个model字段的值。修改后的代码如下:

# 导入Flask对象,导入数据库
from flask import Flask, render_template, request, redirect
import pymysql

# 使用Flask对象创建一个app对象
app = Flask(__name__)

@app.route("/addprinter", methods=["GET", "POST"])
def add_printer():
    device_list = [] #打印机情报
    if request.method == "GET":
        return render_template("addprinter.html")
    print(request.form)
    device_id = request.form.get("device_id")
    arr_data = request.form.get("arr_data")
    device_sn = request.form.get("device_sn")
    buy_dept = request.form.get("buy_dept")
    catalog = request.form.get("catalog")
    series = request.form.get("series")
    model = request.form.getlist("model[]") # 修改这里
    location = request.form.get("location")
    location_detail = request.form.get("location_detail")
    device_status = request.form.get("device_status")
    stock_status = request.form.get("stock_status")
    borrower = request.form.get("borrower")
    borrow_data = request.form.get("borrow_data")
    print("网页上返回arr_data:", arr_data, "网页上返回device_sn:", device_sn, buy_dept, catalog, model) # test输出
    #连结数据库
    conn = pymysql.connect(host="localhost", user="root", password="1111", db="demo")
    cursor = conn.cursor()
    # 使用 execute() 方法执行 SQL 查询
    sql = "INSERT INTO devices (device_id, arr_data,device_sn,buy_dept, catalog, series, model, location, " \
          "location_detail, device_status, stock_status, borrower, borrow_data) " \
          "VALUES(%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s)"
    cursor.execute(sql, [device_id, arr_data, device_sn, buy_dept, catalog, series, ','.join(model), location, location_detail, device_status, stock_status, borrower, borrow_data]) # 修改这里
    conn.commit()
    # 关闭连接
    cursor.close()
    conn.close()
    return "xxx"

if __name__ == "__main__":
    app.run()

另外,在SQL语句中,因为model字段的值可能有多个,所以需要使用join()函数将多个值拼接成一个字符串,然后再存入数据库中。同时,model字段的类型需要修改为VARCHAR类型。修改后的数据库表定义如下:

CREATE TABLE devices(
    device_id CHAR(10) PRIMARY KEY,
    arr_data DATE,
    device_sn CHAR(15) NOT NULL,
    buy_dept CHAR(10),
    catalog CHAR(5),
    series CHAR(10),
    model VARCHAR(50) NOT NULL,
    location CHAR(10),
    location_detail CHAR(10),
    device_status CHAR(5),
    stock_status CHAR(5),
    borrower CHAR(5),
    borrow_data DATE
)
# 导入Flask对象导入数据库 from flask import Flask render_template request redirect import pymysql # 使用Flask对象创建一个app对象 app = Flask__name__ approuteaddprinter methods=GET POST def add_printer device_list = #打印

原文地址: https://www.cveoy.top/t/topic/bzpE 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录