समस्या %s
. के उपयोग की संभावना है कॉलम नाम के लिए। इसका अर्थ है SQL ड्राइवर उद्धरण सहित, इसे प्रक्षेपित करते समय उस चर से बचने की कोशिश करेंगे, जो कि कॉलम नाम, तालिका नाम इत्यादि जैसी चीज़ों के लिए आप नहीं चाहते हैं।
मान . का उपयोग करते समय में SELECT
, WHERE
, आदि तो आप %s
. का उपयोग करना चाहते हैं एसक्यूएल इंजेक्शन को रोकने के लिए और अन्य बातों के अलावा, उद्धरण सक्षम करें।
यहां, आप केवल शुद्ध पायथन का उपयोग करके इंटरपोलेट करना चाहते हैं। इसका मतलब यह भी है कि निष्पादन विधि में कोई बाध्यकारी टपल पास नहीं हुआ है।
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