Mysql
 sql >> Base de données >  >> RDS >> Mysql

Variables Python MySQLdb comme noms de table

Il semble que ceci soit votre instruction SQL :

cursor.execute("INSERT INTO %s (description, url) VALUES (%s, %s);", (table_name.encode("utf-8"), key.encode("utf-8"), data[key].encode("utf-8")))

IIRC, le nom de la table n'est pas paramétrable (parce qu'il est mal cité). Vous devrez injecter cela dans la chaîne d'une autre manière (de préférence en toute sécurité - en vérifiant que le nom de table demandé correspond à un ensemble de noms de table sur liste blanche)... par exemple :

_TABLE_NAME_WHITELIST = frozenset(['four'])

...
if table_name not in _TABLE_NAME_WHITELIST:
    raise Exception('Probably better to define a specific exception for this...')

cursor.execute("INSERT INTO {table_name} (description, url) VALUES (%s, %s);".format(table_name=table_name),
    (table_name.encode("utf-8"),
     key.encode("utf-8"),
     data[key].encode("utf-8")))