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

Python MySQLdb-variabler som tabelnavne

Det ser ud til, at dette er din SQL-sætning:

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, navnet på tabellen er ikke kan parametreres (fordi det bliver citeret forkert). Du bliver nødt til at indsætte det i strengen på en anden måde (helst sikkert -- ved at kontrollere, at det anmodede tabelnavn matcher et hvidlistet sæt tabelnavne)... f.eks.:

_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. WHERE_IN-forespørgsel med en sammensat nøgle?

  2. HubSpot ODBC-driver

  3. Sådan fortæller du, om en beregnet kolonne er deterministisk i SQL Server

  4. Korrekt måde at skrive PDO-opdateringserklæringer på