1. ホーム
  2. python

[解決済み] Python MySQLdb の問題 (TypeError: %d format: 数値が必要で、str ではありません)

2022-02-07 13:51:29

質問内容

以下のような挿入操作を行おうとしています。

cursor.execute("""
                    insert into tree (id,parent_id,level,description,code,start,end)
                    values (%d,%d,%d,%s,%s,%f,%f)
                    """, (1,1,1,'abc','def',1,1)
                    )

私のMYSQLテーブルの構造は。

id int(255),
parent_id int(255),
level int(11),
description varchar(255),
code varchar(255),
start decimal(25,4),
end decimal(25,4)

しかし、このプログラムを実行すると、エラーが発生します。

ファイル "/usr/lib/pymodules/python2.6/MySQLdb/cursors.py", 行 151, in execute クエリ = クエリ % db.literal(args)

TypeError: %d format: str" ではなく、数値が必要です。

解決方法は?

フォーマット文字列は、実際には通常のPythonのフォーマット文字列ではありません。常に %s をすべてのフィールドで使用します。

参照 公文書 :

argsがリストまたはタプルの場合、%sは プレースホルダー をクエリに追加します。argsがdictの場合、%(name)sはクエリのプレースホルダとして使用できます。

-> つまり: ここ %s NOT フォーマッタ しかし はプレースホルダー