MySQL - Pythonanywhere - 同时添加2个值

时间:2017-06-01 18:37:35

标签: mysql pythonanywhere

我正在将此代码用于数据库:

    class Wachtwoord(db.Model):

    __tablename__ = "wachtwoorden"

    id = db.Column(db.Integer, primary_key=True)
    pogingen = db.Column(db.String(80))
    namen = db.Column(db.String(80))

@app.route("/", methods=["GET", "POST"])

def main():

    if request.method == "GET":
        print("in request.method = get")
        return render_template("main_page.html")

    if (request.form["Knop1"] == "1912"):
        print ('Het wachtwoord is geraden:', request.form["Knop1"])
        poging = Wachtwoord(pogingen=request.form["Knop1"])
        naam = Wachtwoord(namen=request.form["Knop2"])
        db.session.add(poging)
        db.session.add(naam)
        db.session.commit()
        return redirect("http://tegelizr.nl/tegeltjes/dat-klopt-als-een-bus.png")

    else:
        print ('Iemand heeft een het wachtwoord geraden:', request.form["Knop1"])
        poging = Wachtwoord(pogingen=request.form["Knop1"])
        naam = Wachtwoord(namen=request.form["Knop2"])
        db.session.add(poging, naam)
        db.session.commit()
        return render_template("main_page.html")

当我使用此代码时,我会选择*来自wachtwoorden;",它会返回:

https://i.gyazo.com/e83343d29e65b754bce97fd36a8248e3.png

所以它返回:pogingen-null然后下一行null-namen。如何在没有" null"的情况下制作pogingen-namen。我在db.session.add()之后添加了db.session.commit(),为什么它不起作用?

感谢。

1 个答案:

答案 0 :(得分:0)

在你的代码中你有这个:

    poging = Wachtwoord(pogingen=request.form["Knop1"])
    naam = Wachtwoord(namen=request.form["Knop2"])
    db.session.add(poging)
    db.session.add(naam)

这意味着您要告诉系统创建两个新的Wachtwoord个对象,其中一个对象pogingen设置为request.form["Knop1"]namen未设置,另一个将namen设置为request.form["Knop2"]pogingen设置为Wachtwoord

因此,为什么它在数据库中创建两行的答案就是你告诉它这样做: - )

要创建一个 wachtwoord = Wachtwoord(pogingen=request.form["Knop1"], namen=request.form["Knop2"]) db.session.add(wachtwoord) 并在其上设置两个值,请执行以下操作:

[:,None]