2017-03-07 9 views
1

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

答えて

1

ああ、私はそれを見つけました。私は
cursor = connection.cursorを持っていたし、それがなければならない - もちろん -
cursor = connection.cursor()

こと...私は今、恥で非表示になります。私を見ないでください。

関連する問題