どういうわけかコピペしたスクリプトとかで、片方では問題なく実行できたのに、もう片方がタイトルのようなエラーが出る事例がありました。ただ、片方はコマンドラインで実行、もう片方は記憶ではjupyter notebookだったような気がしなくもないですが…。色々いじって解決できたので、今後のためにメモしておきます。

プレースホルダーを使う時にエラーが発生している模様

どうも、このエラーにはパターンがあるようで、以下のように型に関するエラーのようです。

python ‘float64’ cannot be converted to a mysql type とか
python ‘tuple’ cannot be converted to a mysql type とかあるらしいんですけど、
今回私に出てきたエラーは以下

MySQL Error: Failed processing format-parameters Python ‘int64’ cannot be converted to a mysql type

try catch文で出てきたエラーで、どうもMysql用の型に変換できなかったとかなんとか。でも文法的には問題ないんだけど。。

cursor=db.cursor()
cursor.execute(update_sql,(series[0],series["code_no"]))

と、こういう感じでした。しょうがないので、必要ないと思ったけど、なんとなくキャストしてみたら解決しました

cursor=db.cursor()
cursor.execute(update_sql,(int(series[0]),int(series["code_no"])))

これで解決。意味がちょっとわからなかったけど、たぶん。。。。型が違った。。。んですかね?

update文でしたが、実際に更新されたデータもきっちり意図通りの更新ができました。よかった。

コメント

executeする変数の数を増やすとこのエラーが出て悩んでいましたがキャストすることで解決しました.