2013-10-14 12 views
6

स्वरूपण मैं एक PostgreSQL डेटाबेस अप करने के लिए जुड़ा हुआ psycopg2 में एक प्रश्न को क्रियान्वित कर रहा हूँ के दौरान परिवर्तित नहीं किया।PostgreSQL लेखन त्रुटि: सभी तर्क स्ट्रिंग

with open('dataFile.txt', 'r') as f: 
    lines = f.readlines() 
    newLines = [line[:-1] for line in lines] 
    curr=conn.cursor() 
    lineString = ','.join(newLines) 
    curr.execute("SELECT fields.fieldkey FROM fields LEFT JOIN zone ON zone.fieldkey=fields.fieldkey WHERE zone.zonekey = %s;", (newLines[0])) 
    rows = curr.fetchall() 

कोई समस्या नहीं DB से कनेक्ट कर रहा है, और लाइनों के प्रकार [0] निश्चित रूप से स्ट्रिंग है नहीं है, मुझे लगता है कि जाँच की: यहाँ सवाल में कोड है। क्या मेरे स्ट्रिंग स्वरूपण के वाक्यविन्यास में कुछ गड़बड़ है?

त्रुटि मैं मिलता है, स्पष्ट करने के लिए यह है:

TypeError: not all arguments converted during string formatting 

उत्तर

12

वहाँ एक टपल कि बनाने के लिए lines[0] के बाद एक अल्पविराम होना चाहिए।

curr.execute(""" 
    SELECT fields.fieldkey 
    FROM fields 
    LEFT JOIN zone ON zone.fieldkey=fields.fieldkey 
    WHERE zone.zonekey = %s; 
""", (lines[0],)) 

execute method is expecting a sequence (or a mapping) चूंकि यह स्ट्रिंग आप कोष्ठक से घिरा प्रदान की अधिक iterates। तो यह स्पष्ट रूप से एक ट्यूपल बनाने के लिए आवश्यक है।

(tuple(lines[0])) 
: एक ही परिणाम, साफ कोड के साथ, tuple function का उपयोग कर किया जा सकता है
संबंधित मुद्दे