sql >> Databasteknik >  >> RDS >> Mysql

Python MySQLdb-variabler som tabellnamn

Det ser ut som att det här är din SQL-sats:

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, namnet på tabellen är inte kan parametreras (eftersom det citeras felaktigt). Du måste injicera det i strängen på annat sätt (helst säkert -- genom att kontrollera att det begärda tabellnamnet matchar en vitlistad uppsättning tabellnamn)... t.ex.:

_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-data trunkerade för kolumn "avancera" på rad 1

  2. Skillnad mellan en användare och ett schema i Oracle?

  3. Oracle SQL - Identifiera sekventiella värdeintervall

  4. Hur man använder främmande nycklar med PHP