2017-03-07 2 views
1

Verwenden von virtualenv mit python3, Flask und sqlite3, um eine Datenbank von einer sehr einfachen Webseite abzufragen. Ich kann die eingegebenen Daten nicht in die Felder auf der Startseite einfügen. Die /what_the_f Seite zeigt weiterhin "Fehler" an. Was mache ich falsch? Ich vermute die try: cursor.excecute, aber ich bin ratlos zu verstehen, warum das nicht funktioniert und wie es zu beheben, so dass der Text und Integer in den home.html Seiten eingegeben in die DB eingefügt werden.Flask sqlite3 INSERT fehlgeschlagen, keine Fehlermeldung?

Die Datenbank Initialisierungsdatei:

import sqlite3 
connection = sqlite3.connect('database.db') 
connection.execute('CREATE TABLE movies (title TEXT, rating INTEGER)') 
connection.close() 

Datenbank manuell erstellt:

(venv) Tue Mar 07 18:42:38$ python initdb.py

Das Python-Skript:

from flask import Flask, render_template, request 
import sqlite3 

app = Flask(__name__) 

@app.route('/') 
def home(): 
    return render_template('home.html') 

@app.route('/what_the_f', methods = ['POST']) 
def movie(): 
    connection = sqlite3.connect('database.db') 
    cursor  = connection.cursor # <-------------- LOOKIE THERE! 
    title  = request.form['title'] 
    rating  = request.form['rating'] 

    try: 
     cursor.execute('INSERT INTO movies (title,rating) VALUES (?,?)', (title,rating)) 
     connection.commit() 
     message = "success" 
    except: 
     connection.rollback() 
     message = "failure" 
    finally: 
     connection.close() 
     return message 

Die /templates/home.html Datei:

<!DOCTYPE html> 
<html> 
    <head> 
    <title>WTF? TEST</title> 
    </head> 
    <body> 
    <h1>WTactualF??</h1> 
    <form action="/what_the_f" method="POST"> 
     <input name="title" /> 
     <input name="rating" /> 
     <input type="submit" value="Submit" /> 
    </form> 
    </body> 
</html> 

Ich bin gerade mit diesem Bericht vom Server Flask links:

127.0.0.1 - - [07/Mar/2017 18:53:02] "POST /what_the_f HTTP/1.1" 200 -

Flask Laufen im Debug-Modus, bekomme ich das, wenn ich Ausgang vom Server:

OSError: [Errno 9] Bad file descriptor

Antwort

1

Oh mein ... fand es. Ich hatte
cursor = connection.cursor und es sollte - natürlich - sein
cursor = connection.cursor()

... ich jetzt verstecken sich in Scham gehen. Bitte schau mich nicht an.

Verwandte Themen