2013-03-20 14 views
5

に一つの文を実行することができますsqlite3.Warning:あなただけ、このコードを実行しているとき、私はエラーを取得する時

import sqlite3 

user_name = raw_input("Please enter the name: ") 
user_email = raw_input("Please enter the email: ") 

db = sqlite3.connect("customer") 
cursor=db.cursor() 

sql = """INSERT INTO customer 
     (name, email) VALUES (?,?);, 
     (user_name, user_email)""" 

cursor.execute(sql) 

ですが、なぜでしょうか?

+0

私はPythonでsqlite3のを使用したときから、私は、クエリと別の引数であることを持つパラメータではなく、単一の文字列を覚えています。多分それを試してみませんか? – Patashu

答えて

3

クエリ文字列の中央に;,があります。これは無効な構文です。名前付きパラメータバインディングを使用する場合は、辞書を第2引数としてexecuteに渡します。

sql = "INSERT INTO customer (name, email) VALUES (:name, :email)" 
cursor.execute(sql, {'name':user_name, 'email':user_email}) 
+0

それは動作します。しかし、なぜこれがうまくいかないのかわかりません: 'sql =" INSERT INTO customer(name、email)VALUES(user_name、user_email) " cursor.execute(sql) – spamup

+0

補間ではないので、クエリ。これは 'sql =" INSERT INTO customer(name、email)VALUES( '%s'、 '%s') "%(user_name、user_email) –

0

ここhttp://zetcode.com/db/sqlitepythontutorial/試してからの行き方:他のポスターは、あなたが1つのクエリで複数のステートメントを実行しようとしているので、あなたは、この特定のエラーを受信して​​いる書式設定、文について正しいですが(気付か

import sqlite3 

user_name = raw_input("Please enter the name: ") 
user_email = raw_input("Please enter the email: ") 

db = sqlite3.connect("customer") 
with db: 
    cursor=db.cursor() 

    cursor.execute("INSERT INTO customer (name TEXT, email TEXT)") 
    cursor.execute("INSERT INTO customer VALUES ({0}, {1})" .format(user_name, user_email)) 
13

;ステートメントを区切る照会で)。 Pythonのsqlite3のドキュメントから

「)(実行は、単一のSQL文を実行しますあなたはそれを複数の 文を実行しようとすると、それは警告を発生させます(executescriptを使用してください)。 1回の呼び出しで 複数のSQL文を実行したい場合

https://docs.python.org/2/library/sqlite3.html

今、あなたの文は、それがフォーマットされている方法で、他の問題は、(他の投稿の答えを参照)があるので、あなたがexecutescript()を使用していても、正しく実行されません。しかし、あなたが受け取っているエラーは、特に複数のステートメントのためです。私はこのエラーを検索した後、ここでさまよっていたかもしれない他の人にこの回答を投稿しています。

4

利用executescript代わりのexecute

実行()のみ、単一のSQL文を実行します。複数のステートメントを実行しようとすると、Warningが発生します。 1回の呼び出しで複数のSQL文を実行する場合は、startscript()を使用します。

https://docs.python.org/2/library/sqlite3.html#sqlite3.Cursor.execute

関連する問題