Vấn đề có thể là do sử dụng %s
cho tên cột. Điều đó có nghĩa là Trình điều khiển SQL sẽ cố gắng thoát khỏi biến đó khi nội suy nó, bao gồm cả trích dẫn, đây không phải là điều bạn muốn cho những thứ như tên cột, tên bảng, v.v.
Khi sử dụng giá trị trong SELECT
, WHERE
, v.v. thì bạn muốn sử dụng %s
để ngăn chặn tiêm SQL và cho phép trích dẫn, trong số những thứ khác.
Ở đây, bạn chỉ muốn nội suy bằng cách sử dụng python thuần túy. Điều đó cũng có nghĩa là không có tuple ràng buộc nào được truyền cho phương thức thực thi.
def findmin(column):
cur = db.cursor()
sql = "SELECT MIN({0}) FROM table".format(column)
cur.execute(sql)
mintup = cur.fetchone()
SQL fiddle hiển thị SQL đang hoạt động:
http://sqlfiddle.com/#!2/e70a41/1