MySQLPythonがクエリの変数プレースホルダーに標準の文字列形式マーカー( "%")を使用しているという事実は、混乱を招く可能性があります。
Pythonのdb-apiのクエリプレースホルダーは値用です where
で使用されます 句とinsert
およびupdate
ステートメントであり、SQLインジェクションなどを回避するために、db-apiによって適切にサンティファイ/エスケープ/引用されます。これらは、テーブル名またはフィールド名に使用されることは想定されていません。
したがって、ここで必要なのは、文字列フォーマットを使用してクエリを作成することです。
sql = 'SHOW TABLES FROM %s;' % (db_name[0],)
cursor.execute(sql)
db_name[0]
以降 信頼できるソースからのものであり、ここではセキュリティの問題はありません。