Problemet är troligen användningen av %s
för kolumnnamnet. Det betyder SQL-drivrutinen kommer att försöka undvika den variabeln när den interpoleras, inklusive citat, vilket inte är vad du vill ha för saker som kolumnnamn, tabellnamn, etc.
När du använder ett värde i SELECT
, WHERE
, etc. så vill du använda %s
för att förhindra SQL-injektioner och möjliggör bland annat citering.
Här vill du bara interpolera med ren python. Det betyder också att inga bindningar skickas till exekveringsmetoden.
def findmin(column):
cur = db.cursor()
sql = "SELECT MIN({0}) FROM table".format(column)
cur.execute(sql)
mintup = cur.fetchone()
SQL-fiol som visar att SQL fungerar:
http://sqlfiddle.com/#!2/e70a41/1