sql >> Base de Datos >  >> RDS >> Mysql

Python MySQLdb variables como nombres de tabla

Parece que esta es su declaración 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, el nombre de la tabla es no parametrizable (porque se cita incorrectamente). Deberá inyectar eso en la cadena de alguna otra manera (preferiblemente de forma segura, comprobando que el nombre de la tabla solicitada coincida con un conjunto de nombres de tabla en la lista blanca)... por ejemplo:

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