तथ्य यह है कि MySQLPython प्रश्नों में प्लेसहोल्डर चर के लिए मानक स्ट्रिंग प्रारूप मार्कर ("%") का उपयोग करता है, यह चीजों को भ्रमित कर सकता है।
अजगर के डीबी-एपीआई में क्वेरी प्लेसहोल्डर मानों . के लिए हैं where
. में उपयोग किया जाता है खंड और insert
और update
कथन, और SQL इंजेक्शन आदि से बचने के लिए db-api द्वारा उचित रूप से पवित्र/बच गए/उद्धृत हैं। उनका उपयोग तालिका या फ़ील्ड नामों के लिए नहीं किया जाना चाहिए।
तो, आप यहां स्ट्रिंग स्वरूपण का उपयोग करके अपनी क्वेरी बनाना चाहते हैं:
sql = 'SHOW TABLES FROM %s;' % (db_name[0],)
cursor.execute(sql)
चूंकि db_name[0]
विश्वसनीय स्रोत से आता है, यहां कोई सुरक्षा समस्या नहीं है।