Problemem jest prawdopodobnie użycie %s
dla nazwy kolumny. Oznacza to, że sterownik SQL spróbuje uciec od tej zmiennej podczas jej interpolacji, łącznie z cytowaniem, co nie jest tym, czego chcesz w przypadku nazw kolumn, nazw tabel itp.
Gdy używasz wartości w SELECT
, WHERE
itp., to chcesz użyć %s
aby zapobiec wstrzykiwaniu SQL i włącz cytowanie, między innymi.
Tutaj po prostu chcesz interpolować za pomocą czystego Pythona. Oznacza to również, że żadna krotka powiązań nie została przekazana do metody execute.
def findmin(column):
cur = db.cursor()
sql = "SELECT MIN({0}) FROM table".format(column)
cur.execute(sql)
mintup = cur.fetchone()
Skrzypce SQL pokazujące działanie SQL:
http://sqlfiddle.com/#!2/e70a41/1