Fakta bahwa MySQLPython menggunakan penanda format string standar ("%") untuk variabel placeholder dalam kueri dapat membuat segalanya membingungkan.
Placeholder kueri di db-api python adalah untuk nilai digunakan di where
klausa dan insert
dan update
pernyataan, dan disanitasi dengan benar / lolos / dikutip oleh db-api untuk menghindari injeksi SQL dll. Mereka tidak seharusnya digunakan untuk nama tabel atau bidang.
Jadi, yang Anda inginkan di sini adalah membuat kueri menggunakan pemformatan string:
sql = 'SHOW TABLES FROM %s;' % (db_name[0],)
cursor.execute(sql)
Sejak db_name[0]
berasal dari sumber tepercaya, tidak ada masalah keamanan di sini.