2016-10-10 32 views
-2

我有一個數據,它看起來像(如例子) -使用詞典和數據,並從數據庫的工作 - 的Python 3

{"phone_number": "XXX1","phone_number_country": "XXX2","text": "XXX2"} 

其中XXX是我的數據(也可以是不同類型的數據)

另外,我有DB與數據,它看起來像(如實施例) - [DB

數據從DB採取:

con = sqlite3.connect('dab') 
cur = con.cursor() 
c = cur.execute('SELECT * FROM some') 
u_data = c.fetchall() 

每一行都是一組數據。

的數據被從第一行和數據取自COLUMN_1進入的XXX1的地方,從COLUMN_2數據進入的XXX2和數據的地方從column_3去的地方XXX3 ...

之後,我應該從原始數組(模板)+從數據庫中獲取數據...然後這個字典應該提交給數據庫,循環應該繼續下去,直到來自數據庫和每次的數據提交我的新字典到DB ...

現在我有一些代碼:

import sqlite3 
from itertools import product 

a = {"phone_number": "XXX","phone_number_country": "XXX","text": "XXX"} 

con = sqlite3.connect('dab') 
cur = con.cursor() 
c = cur.execute('SELECT * FROM some') 
u_data = c.fetchall() 
s = list(u_data) 
b = list(zip(*u_data)) 
out = product(*b) 
tout =list(out) 
i = 0 
for elem in b: 
    b[i] = elem 
    a["phone_number"] = elem[0] 
    a["phone_number_country"] = elem[1] 
    a["text"] = elem[2] 
    print(a) 
控制檯

,我有這樣的:

{'text': 'phone_number31', 'phone_number_country': 'phone_number21', 'phone_number': 'phone_number11'} 
{'text': 'phone_number_c32', 'phone_number_country': 'phone_number_c22', 'phone_number': 'phone_number_c12'} 
{'text': 'text33', 'phone_number_country': 'text23', 'phone_number': 'text13'} 

它應該是:

{"phone_number": "phone_number11","phone_number_country": "phone_number_c12","text": "text13"} 
{"phone_number": "phone_number21","phone_number_country": "phone_number_c22","text": "text23"} 
{"phone_number": "phone_number31","phone_number_country": "phone_number_c32","text": "text33"} 
+1

什麼是你的問題? – nekomatic

+0

這是一本字典,不是數組... – MMF

+0

@MMF - 好的,有什麼想法嗎? –

回答

0

默認情況下,python中的字典不保留插入順序。你需要有序的字典。

我已複製你的代碼下面的部分:

import collections 
a = collections.OrderedDict() 

for elem in b: 
    b[i] = elem 
    a["phone_number"] = elem[0] 
    a["phone_number_country"] = elem[1] 
    a["text"] = elem[2] 
    print(a) 
0

答案在這裏:

a = {"phone_number": "XXX","phone_number_country": "XXX","text": "XXX"} 

con = sqlite3.connect('dab') 
cur = con.cursor() 
c = cur.execute('SELECT * FROM some') 
u_data = c.fetchall() 
s = list(u_data) 
i = 0 
for elem in s: 
    s[i] = elem 
    a["phone_number"] = elem[0] 
    a["phone_number_country"] = elem[1] 
    a["text"] = elem[2]