Проблемът вероятно е използването на %s
за името на колоната. Това означава SQL драйвер ще се опита да избегне тази променлива, когато я интерполира, включително цитиране, което не е това, което искате за неща като имена на колони, имена на таблици и т.н.
При използване на стойност в SELECT
, WHERE
и т.н., тогава наистина искате да използвате %s
за предотвратяване на SQL инжекции и позволява цитиране, наред с други неща.
Тук просто искате да интерполирате с помощта на чист питон. Това също означава, че не се предава кортеж за свързване към метода за изпълнение.
def findmin(column):
cur = db.cursor()
sql = "SELECT MIN({0}) FROM table".format(column)
cur.execute(sql)
mintup = cur.fetchone()
SQL цигулка, показваща работата на SQL:
http://sqlfiddle.com/#!2/e70a41/1