2017-07-05 1 views
1

Bitte ignorieren Sie meinen Hack-Job, ich versuche nur, Daten aus einem Formular in SQL Server einzufügen.Eingeben von Daten aus dem Formular in die Datenbank: sqlalchemy.orm.exc.UnmappedInstanceError

@app.route("/contact", methods = ['GET', 'POST']) 
def contact(): 
    form = PayRoll_Form() 

    if request.method == 'POST': 
     if form.validate() == False: 
      flash('All fields are required.') 
      return render_template('contact.html', form = form) 
     else: 
      N = engine.execute(PayRoll.insert(), 
       Name = request.form['Name'], 
       CreateUserPK = request.form['CreateUserPK'], 
       PeriodStart = request.form['PeriodStart'], 
       PeriodStop = request.form['PeriodStop'], 
       DueDate = request.form['DueDate']) 
      session.add(N) 
      session.commit() 
      flash('Submited') 
      return redirect("/contact") 
    if request.method == 'GET': 
     return render_template('contact.html', form = form) 
if __name__ == '__main__': 
    app.run(debug=True,port=5000) 

Antwort

0

Sie scheinen hier mögliche Implementierungen zu mischen; Die Zeile N = engine.execute(... führt die INSERT tatsächlich direkt gegen die DB aus. Es ist nicht sinnvoll, das Ergebnis zur aktuellen Sitzung hinzuzufügen und diese Sitzung zu committen. Sie würden diese Methoden nur verwenden, wenn Sie ein ORM-Objekt hätten, an dem Sie Änderungen vorgenommen (oder erstellt) hätten und das Sie festgeschrieben haben wollten, aber Sie haben dies bereits in der oben angegebenen Zeile getan.

+0

Hmm ok, sagen Sie also sollte ich die 'N = engine.execute nehmen (...' – Everett

+0

@Everett nein, das Hinzufügen und verpflichten Linien – jknupp

0

das Problem hier gelöst:

@app.route("/contact", methods = ['GET', 'POST']) 
def contact(): 
    form = PayRoll_Form() 

    if request.method == 'POST': 
     if form.validate() == False: 
      flash('All fields are required.') 
      return render_template('contact.html', form = form) 
     else: 
      ins = PayRoll.insert().values(
       Name = request.form['Name'], 
       CreateUserPK = request.form['CreateUserPK'], 
       PeriodStart = request.form['PeriodStart'], 
       PeriodStop = request.form['PeriodStop'], 
       DueDate = request.form['DueDate']) 
      result = connection.execute(ins) 
      flash('Submited') 
      return redirect("/contact") 
    if request.method == 'GET': 
     return render_template('contact.html', form = form) 
if __name__ == '__main__': 
    app.run(debug=True,port=5000) 
Verwandte Themen