
あきぞらです。
Pythonでデータベースに接続する処理を書く時があります。
PythonでMySQLに接続する処理を組みこんでいたとき、
こんなエラーに遭遇しました。
1210: Incorrect number of arguments executing prepared statement
原因がすぐに分かったので、今回はその方法を紹介していきます。
原因
PythonでMySQLに接続する処理をこんな風に実装していました。
db: MySQLConnection
try:
db = mysql.connector.connect(
host=host,
port=3306,
user='********',
password='********',
database='********',
charset='utf8',
connection_timeout=15,
)
db.ping(reconnect=True)
statement: str = (
'SELECT * FROM test_table'
)
cursor: MySQLCursor = db.cursor(prepared=True)
cursor.execute(statement, (test, keyword))
...
...
ここで!
cursorのところをこんな風に書いてしまっていました。
cursor.execute(statement, (test, keyword))
executeの第二引数にムダな変数をいれてしまっていました。
こうすると解決しました。
cursor.execute(statement)
意外と凡ミスでハマることもあるので、要注意です。
では、また。