python3でvirtualenvを使用し、Flaskとsqlite3を使用して、非常に基本的なWebページからDBを照会します。ホームページのフィールドに入力されたデータをINSERTできません。 /what_the_f
ページには「失敗」と表示され続けます。私は間違って何をしていますか?私はtry: cursor.excecute
と思っていますが、なぜこれが動作しないのか、それを修正してhome.htmlページに入力されたテキストと整数がDBに挿入されるように理解できています。Flask sqlite3 INSERTエラー、エラーメッセージはありませんか?
データベース初期化ファイル:
import sqlite3
connection = sqlite3.connect('database.db')
connection.execute('CREATE TABLE movies (title TEXT, rating INTEGER)')
connection.close()
データベースを手動で作成:
(venv) Tue Mar 07 18:42:38$ python initdb.py
Pythonスクリプト:
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
/templates/home.htmlファイル:
<!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>
は、私はちょうどフラスコサーバからこのレポートを残しています:
127.0.0.1 - - [07/Mar/2017 18:53:02] "POST /what_the_f HTTP/1.1" 200 -
は、デバッグモードでフラスコを実行して、私はこれを取得するときに私のサーバーからの出口:
OSError: [Errno 9] Bad file descriptor