次のコードでエラーが発生します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
で使用される パラメータマーカー は、Python文字列の書式設定で使用される%s
と同じように見える場合がありますが、関係は偶然ですoursql
やsqlite3
などの一部のデータベースアダプターは、?
の代わりに%s
をパラメーターマーカーとして使用します。
単一引用符を使用する
sql = '生徒に挿入(id、fname、lname、school)values(%s、%s、%s、%s)' values =(4、 "Gaddafi"、 "Adamu"、 "Informatic")
a.execute(sql、values)
mydb.commit()print(a.rowcount、 "レコードが挿入されました。")