2016-08-02 12 views
0

あなたは少し下にスクロールする場合は、g.d.d.c return SQL table as JSON in pythonからこのコードを見ることができます:保存時にPythonでSQLカラムの順序を保持するにはどうしたらいいですか?

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 = {}'を 'song = OrderedDict()'に置き換えてください。スクリプトの先頭にある 'コレクションからOrderedDictをインポートする 'ことが必要になります。 –

+0

これは私のためにすばやく簡単に働きました。どうもありがとうございます! – Proxos

答えて

1

Python dictキーの順序を保存しないで、代わりにOrderedDictを使用してください。

1

私が理解していれば、あなたは辞書にキーを注文して欲しいです。辞書はキーをある順序で保持していないため、キーは要素にアクセスするためにのみ使用されるため、不可能です。

cols = ["column1", "column2", "column3"] 
for row in data_from_database: 
    for col in cols: 
     print row[col] 
関連する問題