从烧瓶注册表中插入 sql 表

时间:2021-05-28 19:22:28

标签: python sql flask

我在烧瓶中有一个注册表,路径如下

@app.route("/adgangskontrol/Opret", methods=['GET', 'POST'])
def register():
# Output message if something goes wrong...
msg = " "
# Check if "Brugernavn", "Kodeord" and "email" POST requests exist (user submitted form)
if request.method == "POST" and "Brugernavn" in request.form and "Kodeord" in request.form:
    # Create variables for easy access
    Brugernavn = request.form["Brugernavn"]
    Kodeord = request.form["Kodeord"]
    # Check if bruger exists using MySQL
    cursor = mysql.connection.cursor(MySQLdb.cursors.DictCursor)
    cursor.execute("SELECT * FROM brugere WHERE Brugernavn = %s", (Brugernavn,))
    bruger = cursor.fetchone()
    # If bruger exists show error and validation checks
    if bruger:
        msg = "Bruger findes i forvejen"
    elif not re.match(r'[A-Za-z0-9]+', Brugernavn):
        msg = "Brugernavn må kun undeholde bogstaver og tal"
    elif not Brugernavn or not Kodeord:
        msg = "Alle felter skal udfyldes!"
    else:
        # bruger doesnt exists and the form data is valid, now insert new bruger into brugers table
        cursor.execute("INSERT INTO brugere VALUES (NULL, NULL, %s, %s, CURRENT_TIMESTAMP, NULL)", (Brugernavn, Kodeord))
        mysql.connection.commit()
        msg = "Du er nu registreret!"
elif request.method == "POST":
    # Form is empty... (no POST data)
    msg = "Alle felter skal udfyldes!"
# Show registration form with message (if any)
return render_template("register.html", msg=msg)

我的sql表是这样的:

brugere table

有没有办法只插入“Brugernavn”或“Kodeord”,这是你注册时填写的数据?

当我尝试按原样执行时,出现此错误:

MySQLdb._exceptions.OperationalError: (1048, "Column 'rfid_uid' 不能为 null")

1 个答案:

答案 0 :(得分:0)

表描述显示 rfid_uid 列不能将 NULL 作为值:这就是“NULL”列中的“NO”的含义。

因此,您必须在插入时提供一个值,或者更改列定义以接受 NULL 值。您可以使用 ALTER TABLE 语句更改列定义,如下所示*:

ALTER TABLE brugere MODIFY COLUMN rfid_uid VARCHAR(255);

在执行此操作之前,您应该确定在此列中包含 NULL 不会影响您的数据完整性。


* 根据表定义的屏幕截图,我猜测您正在使用 MySQL。