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