sql >> Databáze >  >> RDS >> Mysql

Proměnné Python MySQLdb jako názvy tabulek

Vypadá to, že toto je váš příkaz 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, název tabulky není lze parametrizovat (protože je citován nesprávně). Budete to muset vložit do řetězce nějakým jiným způsobem (nejlépe bezpečně – zkontrolováním, že požadovaný název tabulky odpovídá sadě názvů tabulek na seznamu povolených)... např.:

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



  1. MySQL kontingenční tabulky - řádky až sloupce. Dotaz

  2. Zrychlené obnovení databáze v SQL Server 2019

  3. Jak zobrazím řádek tabulky mysql jako sloupec

  4. Jak nastavit Oracle EBS Auditing