web-dev-qa-db-ja.com

すべてのパラメーターがSQLステートメントで使用されたわけではありません(Python、MySQL)

次のコードでエラーが発生しますPythonコード:

import mysql.connector
cnx = mysql.connector.connect(user='root', password='',
                          Host='127.0.0.1',
                          database='DB')
cursor = cnx.cursor()

Name = "James"
Department = "Finance"
StartYear = 2001
CurrentPos = 2001
Link = ""

add_user = ("INSERT INTO DB.tbluser "
       "(username, department, startyear, currentpos, link) "
       "VALUES (%s, %s, %d, %d, %s)")
data_user = (Name, Department, StartYear, CurrentPos, Link)
cursor.execute(add_user, data_user)
cnx.commit()
cursor.close()
cnx.close()

エラーメッセージは

mysql.connector.errors.ProgrammingError: Not all parameters were used in the SQL statement

理由はわかりますか?

32
Enthuziast

パラメータマーカーは%sではなく%dです。

add_user = """INSERT INTO DB.tbluser 
              (username, department, startyear, currentpos, link) 
              VALUES (%s, %s, %s, %s, %s)"""

mysql.connectorで使用される パラメータマーカー は、Python文字列の書式設定で使用される%sと同じように見える場合がありますが、関係は偶然ですoursqlsqlite3などの一部のデータベースアダプターは、?の代わりに%sをパラメーターマーカーとして使用します。

46
unutbu

単一引用符を使用する

sql = '生徒に挿入(id、fname、lname、school)values(%s、%s、%s、%s)' values =(4、 "Gaddafi"、 "Adamu"、 "Informatic")

a.execute(sql、values)

mydb.commit()print(a.rowcount、 "レコードが挿入されました。")

0
Gaddafi adamu