2017-09-12 6 views
0

私は、ユーザからデータを取得するためのRequest.Formを使用して、INSERT INTOでデータベースにそれを保存しようとしています。INSERT INTO ... VALUESはSQL - のRequest.Formとフォーマット

私のコードだった

statement = "INSERT INTO Course(cId, cName) VALUES (%s, %s)" , (cId,cName) 
    result = conn.execute(statement); 
    conn.commit() 
    conn.close() 

コードはコンパイルされますが、Web上で実行されているときに値エラーが発生します。エラーメッセージは

ValueError: operation parameter must be str or unicode 

です。最初の行に自分の書式に問題があることは間違いありません。私はそれを理解することはできません。

答えて

1

1つの文字列ではなく、2つの要素を含むタプルを渡しています。あなたは別々の引数としてパラメータを渡す必要があります。呼び出しはコンマを使用しています

statement = "INSERT INTO Course(cId, cName) VALUES (%s, %s)" 
params = (cId,cName) 
result = conn.execute(statement, params) 

という理由だけで、あなたはタプルにそのカンマを転送することができ、それは同じことを意味しているわけではありません。

タプルをconn.execute(*statement)という構文で開梱しますが、これには可変長の引数がないのでここでは残念です。

関連する問題