2016-01-11 8 views
5

नहीं हैं, मैं पाइथन में पाइबैक लाइब्रेरी का उपयोग करके तालिका की पंक्तियों को पुनर्प्राप्त करने का प्रयास कर रहा हूं।pyodbc द्वारा लौटाई गई पंक्तियां JSON serializable

मैं तालिका के तालिकाओं और फ़ील्ड को सफलतापूर्वक पुनर्प्राप्त करने में सक्षम था। अब मैं एक मेज डेटा के रूप में इस प्रकार के साथ "apx_roomtypes",

enter image description here

हालांकि, जब मैं एक सूची pyodbc पंक्तियां जोड़ी और फिर JSON करने के लिए सूची डंपिंग की कोशिश मैं त्रुटि मिलती है नाम दिया

class execute_query: 
    def GET(self,r): 
      web.header('Access-Control-Allow-Origin',  '*') 
      web.header('Access-Control-Allow-Credentials', 'true') 
      cnxn = pyodbc.connect(connection_string) 
      data = [] 
      cursor = cnxn.cursor() 
      query = web.input().query 
      cursor.execute(query) 
      rows = cursor.fetchall() 
      for row in rows: 
       data.append(row) 
      return json.dumps(data) 

मैं इस त्रुटि को कैसे ठीक कर सकते हैं:

TypeError: (1, 'Standard', 'For 5 members', 123) is not JSON serializable

यहाँ अजगर कोड है?

उत्तर

9

जब आप rows पर पुनरावृत्त कर रहे हैं, तो प्रत्येक row एक उदाहरण है और list नहीं है। आप इसे एक सूची में परिवर्तित कर सकते हैं (जो JSON serializable है) इस प्रकार है:

rows = cursor.fetchall() 
for row in rows: 
    data.append([x for x in row]) # or simply data.append(list(row)) 

आप इसे मानों की सूची के बजाय कुंजी/मान जोड़े का एक शब्दकोश लौटने के लिए तो एक look at this answer लेने चाहते हैं।

+0

लिंक ब्रो के लिए धन्यवाद, मुझे जो चाहिए – Sajeetharan

+1

'सूची (पंक्ति)' जेनरेटर अभिव्यक्ति के बिना चाल करना चाहिए। – kindall

+0

Thx @kindall - लागू। –

संबंधित मुद्दे