1

PyMySQLを使用して次のクエリを実行しようとしています

cur.execute("SELECT %s as label, UNIX_TIMESTAMP(CONVERT(DATE_FORMAT(date_added, '%%Y-%%m-%%d-%%H:%%i:00'),DATETIME)) as time, %s  as metric FROM %s WHERE id >= %d GROUP BY label, time", (label, metric, table, min_id,))

次のエラーが表示されます。

TypeError: %d format: a number is required, not str

label、metric、table、および min_id は、それぞれ文字列、文字列、文字列、および int です。

% を正しくエスケープしていませんか? これを完全に理解することはできません。いくつかのことを試しました。

ありがとう!

4

1 に答える 1

2

... id >= %d ...する必要があります... id >= %s ...

すべてのパラメータは、フォーマット文字列に適用される前に、文字列に変換されてエスケープされます。

于 2013-06-27T21:17:28.740 に答える