2016-04-25 113 views
0

我有3D字典,並希望將數據插入到sqlite3的蟒蛇插入3D字典SQLITE3

我知道如何插入1D數據,但我還沒有嘗試插入2D或3D數據,我不知道如何去做。

data = {'username': {'classes': {'closedclasses': {'classCode5': {'code': 'phys111', 
                 'term': 'fall'}}, 
         'openclasses': {'classCode1': {'code': 'art123', 
                'term': 'Fall'}, 
             'classCode2': {'code': 'art111', 
                'term': 'spring'}}}, 
      'name': {'firstName': 'aaaa', 'lastName': 'bbbb'}}} 

數據將具有多個用戶名,每個用戶名對於openclasses和closeedclass具有不同數量的數據。我怎麼能存儲所有的數據,以便將來我可以打電話給他們這樣的:

data[username]["openclasses"]["classCode2"]["code"] 

data[username]["name"]["firstName"] 
+1

您的JSON似乎沒有很好的結構。您想如何將其存儲在數據庫中取決於您希望如何規範化。你可以簡單地將它壓扁並插入一張桌子,或者你可以轉到另一個極端,併爲國家,州和省份製作桌子。這真的取決於你想要對數據做什麼 – e4c5

+0

@ e4c5我很抱歉我的例子不正確,我已經更新了這個問題,謝謝 –

+0

我認爲你最好的選擇是使用多個表,但是到底怎麼走關於這個,然後將它映射回你的python對象層次結構可能對於這個論壇來說太廣泛了。 –

回答

1

一種可能性是有表名用戶如下

id 
first_name 
last_name 

然後上課

id 
class_code 
term 
status # open or closed 

正如在評論中已經提到的那樣,你的json的結構不是很好。 classCode5,classCode2等實際上只應該是classCode無論你寫什麼代碼,你的工作都將從JSON中獲取這些信息。

最後但並非最不重要的是,您需要一張表來鏈接用戶和類。

id 
user_id 
class_id 
+0

謝謝你的幫助,我可以得到紅色的openclasses,但我仍然需要closedclasses,我會創建列first_name,last_name,用戶名,但類代碼和術語將有2d數據 –

+0

我給出的結構並不強迫你擺脫任何東西。 classes表支持open和closed類。請注意狀態字段。這對於公開是真實的,對於封閉是真的。或者,您可以將其設置爲文本字段,並在其中插入「打開」或「關閉」。 – e4c5

+1

@ user2564147,使用這個解決方案,你不需要去掉openclasses。打開和關閉的類一起存儲在一個表中。你需要使用SQL來獲取你想要填充到對象中的那些。 –