2016-08-02 35 views
0

如果你稍微向下滾動,你可以從g.d.d.c return SQL table as JSON in python看到這樣的代碼:如何保存我的SQL列在Python中的順序?

qry = "Select Id, Name, Artist, Album From MP3s Order By Name, Artist" 
# Assumes conn is a database connection. 
cursor = conn.cursor() 
cursor.execute(qry) 
rows = [x for x in cursor] 
cols = [x[0] for x in cursor.description] 
songs = [] 
for row in rows: 
    song = {} 
    for prop, val in zip(cols, row): 
    song[prop] = val 
    songs.append(song) 
# Create a string representation of your array of songs. 
songsJSON = json.dumps(songs) 

我只想讓我的列的順序。

例如,當我print(cols)我得到這個:

['id', 'Color', 'YCoord', 'Width', 'Height'] # right order 

但列被保存在一個錯誤的順序:

[{"Color": "#FF99FF","Width"=345, "id"=43, "YCoord"=5784 "Height"=-546}...] # wrong order 

列更多的添加,更隨意就愈大。

+2

詞典未排序,用'song = OrderedDict()'替換'song = {}'。您將需要從集合中導入OrderedDict'在腳本的頂部 –

+0

這對我而言非常快速和容易。非常感謝! – Proxos

回答

1

如果我明白你想要字典有訂購的關鍵。這是不可能的,因爲字典沒有按照某種順序保存密鑰,因爲密鑰僅用於訪問元素。您可以使用原始列信息始終打印數據列:

cols = ["column1", "column2", "column3"] 
for row in data_from_database: 
    for col in cols: 
     print row[col] 
相關問題