2017-07-05 4 views
1

Veuillez ignorer mon travail de piratage, j'essaie simplement d'obtenir des données à partir d'un formulaire inséré dans SQL Server.Saisie de données à partir du formulaire dans la base de données: 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) 

Répondre

0

Vous semblez mélanger les implémentations possibles ici; la ligne N = engine.execute(... exécute réellement le INSERT directement contre la base de données. Essayer d'ajouter le résultat à la session en cours et valider cette session n'a pas de sens. Vous utiliseriez ces méthodes seulement si vous aviez un objet ORM que vous avez modifié (ou créé) et que vous vouliez commettre, mais vous l'avez déjà fait dans la ligne référencée ci-dessus.

+0

Hmm ok, donc vous dites que je devrais prendre le 'N = engine.execute (...' – Everett

+0

@Everett non, l'ajout et COMMIT lignes – jknupp

0

résolu le problème ici:

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