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:
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.
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)