sql >> Database >  >> RDS >> Mysql

Python MySQLdb-variabelen als tabelnamen

Het lijkt erop dat dit uw SQL-statement is:

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, de naam van de tabel is niet parametreerbaar (omdat het verkeerd wordt geciteerd). U moet dat op een andere manier in de tekenreeks injecteren (bij voorkeur veilig -- door te controleren of de gevraagde tafelnaam overeenkomt met een reeks tabelnamen op de witte lijst)... bijvoorbeeld:

_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. Een voorloopnul toevoegen aan sommige waarden in de kolom in MySQL

  2. Scheidingsgraden Query

  3. Hoe de W10 Universal App te verbinden met de MySQL-database

  4. Een array invoegen in een enkele door MySQL voorbereide instructie met PHP en PDO