前駆体:
MySQL Table created via:
CREATE TABLE table(Id INT PRIMARY KEY NOT NULL, Param1 VARCHAR(50))
関数:
.execute("INSERT INTO table VALUES(%d,%s)", (int(id), string)
出力:
TypeError: %d format: a number is required, not a str
ここで何が起こっているのか、コマンドを実行できない理由がわかりません。これはPythonでMySQLdbを使用しています。 .execute
はカーソルオブジェクトで実行されます。
編集:
質問: Python MySQLdbの問題(TypeError:%d形式:strではなく、数値が必要です) は、%s
すべてのフィールド。これはなぜでしょうか?なぜこのコマンドが機能するのですか?
.execute("INSERT INTO table VALUES(%s,%s)", (int(id), string)
クエリの実行中はクエリ全体が文字列形式である必要があるため、%s
使用すべきです...
クエリが実行された後、整数値は保持されます。
だからあなたのラインはそうあるべきです。
.execute("INSERT INTO table VALUES(%s,%s)", (int(id), string))
説明は ここ です
形式文字列は実際には通常のPython形式文字列ではありません。すべてのフィールドに常に%sを使用する必要があります