1. ホーム
  2. python

[解決済み] SQL文の中ですべてのパラメータが使用されていない(Python、MySQL)

2022-01-31 03:26:26

質問内容

以下の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

なぜかわかりますか?

どうすればいい?

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

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

ただし パラメータマーカー で使用される mysql.connector と同じに見えるかもしれません。 %s Pythonの文字列フォーマットで使用されていますが、その関係は偶然に過ぎません。のようなデータベースアダプタもあります。 oursqlsqlite3 使用 ? の代わりにパラメータマーカとして %s .