DB Python 開発

PythonからMySQLにinsertしようとしたら'numpy.float64' object has no attribute 'translate'になる

PythonからMySQLにinsertしようとしたら'numpy.float64' object has no attribute 'translate'になる

PythonからMySQLにinsertしようとしたら

'numpy.float64' object has no attribute 'translate'

のエラーが発生してinsertできない。

恐らく多くのPythonユーザーが直面したであろうこの問題。
今回はこのエラーの原因と対処法の1つを紹介する。


エラー原因

エラー原因は変数の型が合っていない事。

エラーメッセージ 'numpy.float64' object has no attribute 'translate' を訳すと 'numpy.float64' オブジェクトは'translate'のattributeを持ってないよ となる。

つまり通常はPythonの変数型を 'translate' によってMySQL側に合わせてからinsertしているが、numpy.float64型は'translate'する機能が無い(MySQLとの互換性がない)のでinsertできなかった、ということになる。

参考ページ

mysql.connector-pythonはどうもnumpy.float形式やtimestamp形式をinsertしてくれないようで
【メモ】mysql.connector-python を用いたときにpython floatがInsertできないといわれた時の方法 - Qiita


エンコーダは、入力が実際の文字列であると仮定すると、この文字列にtranslate()メソッドを呼び出そう。しかし、このメソッドはfloat64では定義されていないため、このエラーが発生します。
'numpy.float64'オブジェクトに 'translate'属性がありませんPythonでMysqlに値を挿入


対処法

粗い対処方法だが「文字列型に変換してからinsertする」という方法がある。

timestampなどの時間系は

[変数].strftime("%Y-%m-%d")

numpy.float64などの数値系は

str([変数])

で文字列に変換することで、MySQLにinsertできるようになる。

ITipsと同じようなブログを作る方法

ブログに興味がありますか?

もしブログに興味がある場合は↓このページ↓を参考にすれば、ITipsと同じ構成でブログを作ることができます

サーバー、ドメイン、ASPと【ブログに必要なものは全て】このページに書きました。
同じ構成でブログ作るのはいいけど、記事はマネしないでネ (TДT;)

ランキング参加中

にほんブログ村 IT技術ブログへ

他にもブログやSNSで紹介してくれると励みになります。

はてブのコメントで酷評されると泣きます(´;ω;`)

-DB, Python, 開発
-,

© 2024 ITips