Search code examples
mysqlpythonanywhere

MySQL - Pythonanywhere - Adding 2 values at the same time


I am using this code for a database:

    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")

When I use this code and I do "select * from wachtwoorden;", it returns this:

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

So it returns: pogingen-null and then next line null-namen. How can I make it pogingen-namen, without the "null". I added db.session.commit() after db.session.add() so why doesn't it work?

Thanks.


Solution

  • In your code you have this:

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

    That means you're telling the system to create two new Wachtwoord objects, one of which has pogingen set to request.form["Knop1"], and namen unset, and the other has namen set to request.form["Knop2"], and pogingen unset.

    So the answer to why it's creating two rows in the database is that you're telling it to do that :-)

    To create a single Wachtwoord with the two values set on it, just do this:

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