2017-04-27 67 views
-1

所以我有這樣的代碼:如何將數組數組轉換爲Flask中的對象數組?

@app.route("/") 
def users(): 
    try: 
     c, conn = connection() 
     c.execute(''' SELECT * FROM users ''') 
     rv = c.fetchall() 
     return jsonify(rv) 
    except Exception as e: 
     return(str(e)) 

和輸出看起來是這樣的:

[ 
    [ 
    1, 
    "Robert Soriano", 
    "[email protected]", 
    24 
    ], 
    [ 
    2, 
    "Charmaine Villar", 
    "[email protected]\r\n", 
    23 
    ] 
] 

但自從我做了RESTful API,因此我希望它是在類似對象:

[ 
    { 
    1, 
    "Robert Soriano", 
    "[email protected]", 
    24 
    }, 
    { 
    2, 
    "Charmaine Villar", 
    "[email protected]\r\n", 
    23 
    } 
] 

我想是這樣的:

try: 
     c, conn = connection() 
     c.execute(''' SELECT * FROM users ''') 
     rv = list(c.fetchall()) #converted to list 
     return jsonify(rv) 
    except Exception as e: 
     return(str(e)) 

但我仍然得到相同的輸出。

我在這裏錯過了什麼嗎?在此先感謝

+0

@McGrady謝謝。解決這個問題的最好方法是什麼? – FewFlyBy

+0

'{1,「Robert」}'是Python中的一個集合,不是字典或對象(用Javascript),我想你想生成一個Json字符串,看看http://www.json.org /或https://en.wikipedia.org/wiki/JSON – McGrady

回答

0

我不知道你使用DB驅動程序。我用pymysql進行測試。 cursor.fetchall()的結果及其中的元素全部爲tuple。您可以使用collections.namedtuple爲每個記錄的每個元素分配字段名稱。

Record = collections.namedtuple("Record", ["id", "name", "email", "age"]) 

result = cursor.fetchall() 

records = [Record(*record)._asdict() for record in result] 

有一個很好的工具Records: SQL for Humans™已經爲你做。

相關問題