Фактът, че MySQLPython използва стандартния маркер за формат на низ ("%") за контейнери за променливи в заявките, може да направи нещата объркващи.
Контейнерът за заявки в db-api на python е за стойности използвани в where
клаузи и insert
и update
изрази и са правилно санирани/екранирани/цитирани от db-api, за да се избегнат SQL инжекции и т.н. Те не трябва да се използват за имена на таблици или полета.
И така, това, което искате тук, е да създадете вашата заявка, като използвате форматиране на низ:
sql = 'SHOW TABLES FROM %s;' % (db_name[0],)
cursor.execute(sql)
Тъй като db_name[0]
идва от доверен източник, тук няма проблем със сигурността.