2015-06-20 8 views
6

में एक एसक्यूएल क्वेरी स्वरूपण मैं sqlite3 के साथ प्रयोग करना किया गया है, और मैं एक sqlite3.OperationalError मिल: मेरे कोड query_cursor.execute("INSERT INTO mcdonalds_menu VALUES(%d, %s, %f, %s, %d)" % (ids[num],names[num], price[num], descriptions[num], calories[num])) की इस पंक्ति के लिए सिंटेक्स त्रुटि जब मैं में मूल्यों में डाल: "मीठा" के पास कोड को काम करने के लिए 3 अलग-अलग प्रश्न हैं, लेकिन मैं लूप का उपयोग कर अपने कोड को और अधिक DRY रखने की कोशिश कर रहा हूं। कोड अब तक:स्ट्रिंग sqlite3

import sqlite3 

filename = sqlite3.connect("McDonalds_Menu.db") 
query_cursor = filename.cursor() 

def create_table(): 
    query_cursor.execute("CREATE TABLE mcdonalds_menu (id INTEGER, name VARCHAR(20), price DECIMAL(3, 2), description TEXT, calories INTEGER)") 

ids = range(1,4) 
names = ["McFlurry", "Fillet-o-Fish", "McCafe"] 
price = 1.50, 2.25, 0.99 
descriptions = ["Delicious sweet icecream", "Best fish in the sea", "Freshly brewed Colombian coffee"] 
calories = 220, 450, 75 

def data_entry(): 
    for num in xrange(3): 
     query_cursor.execute("INSERT INTO mcdonalds_menu VALUES(%d, %s, %f, %s, %d)" % (ids[num], names[num], price[num], descriptions[num], calories[num]))  
    filename.commit() 

if __name__ == "__main__": 
    create_table() 
    data_entry() 

क्या लूप का उपयोग कर एक एसक्यूएल क्वेरी प्रारूपित करना संभव है?

उत्तर

3

एसक्यूएल को उद्धृत करने के लिए VALUES में स्ट्रिंग की आवश्यकता है। इंटीग्रेट्स और फ्लोट्स को उद्धृत करने की आवश्यकता नहीं है।

नीचे टिप्पणी की उत्पादन में, ध्यान दें कि SQL VALUES "पट्टिका-ओ-मछली" और "सर्वश्रेष्ठ मछली समुद्र में" के लिए गैर उद्धृत तार शामिल हैं:

sql = "INSERT INTO mcdonalds_menu VALUES(%d, %s, %f, %s, %d)".format(ids[num], names[num], price[num], descriptions[num], calories[num]) 
# INSERT INTO mcdonalds_menu VALUES(2, Fillet-o-Fish, 2.250000, Best fish in the sea, 450) 

कुछ अपने स्ट्रिंग मूल्यों के आसपास उद्धरण भाग निकले जोड़ना वैध एसक्यूएल का उत्पादन करता है:

sql = "INSERT INTO mcdonalds_menu VALUES(%d, \"%s\", %f, \"%s\", %d)" % (ids[num],names[num], price[num], descriptions[num], calories[num]) 
# INSERT INTO mcdonalds_menu VALUES(2, "Fillet-o-Fish", 2.250000, "Best fish in the sea", 450) 
+0

धन्यवाद, यह मेरी समस्या का समाधान करता है। –

+0

आपका स्वागत है। खुशी हुई यह काम किया! – Grokify