Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

Usando Python para acessar SQL com um nome de coluna variável


O problema é provavelmente o uso de %s para o nome da coluna. Isso significa que o Driver SQL tentará escapar dessa variável ao interpolá-la, incluindo aspas, o que não é o que você deseja para coisas como nomes de colunas, nomes de tabelas etc.

Ao usar um valor em SELECT , WHERE , etc., então você deseja usar %s para evitar injeções de SQL e habilitar cotações, entre outras coisas.

Aqui, você só quer interpolar usando python puro. Isso também significa que nenhuma tupla de ligação é passada para o método execute.
def findmin(column):
    cur = db.cursor()
    sql = "SELECT MIN({0}) FROM table".format(column)
    cur.execute(sql)
    mintup = cur.fetchone()

Violino SQL mostrando o SQL funcionando:

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