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