Mysql
 sql >> Database >  >> RDS >> Mysql

Variabili Python MySQLdb come nomi di tabelle

Sembra che questa sia la tua istruzione 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, il nome della tabella non parametrizzabile (perché viene citato in modo improprio). Dovrai inserirlo nella stringa in un altro modo (preferibilmente in modo sicuro, controllando che il nome della tabella richiesto corrisponda a un set di nomi di tabelle nella whitelist)... es.:

_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")))