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

Usando Python para acceder a SQL con un nombre de columna variable

Es probable que el problema sea el uso de %s para el nombre de la columna. Eso significa que el Controlador SQL intentará escapar de esa variable al interpolarla, incluidas las comillas, que no es lo que desea para cosas como nombres de columnas, nombres de tablas, etc.

Al usar un valor en SELECT , WHERE , etc. entonces sí quieres usar %s para prevenir inyecciones de SQL y habilitar cotizaciones, entre otras cosas.

Aquí, solo desea interpolar usando Python puro. Eso también significa que no se pasó ninguna tupla de enlaces al método de ejecución.

def findmin(column):
    cur = db.cursor()
    sql = "SELECT MIN({0}) FROM table".format(column)
    cur.execute(sql)
    mintup = cur.fetchone()

Violín de SQL que muestra el funcionamiento de SQL:

http://sqlfiddle.com/#!2/e70a41/1