2016-04-25 3 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 и closeedclasses. Как я могу хранить все данные, так что в будущем я могу назвать их так:

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, но мне все еще нужны закрытые классы, я создам столбцы для first_name, last_name, username, но код и термины класса будут иметь 2d-данные. –

+0

Структура, которую я дал, не заставляет вас избавиться от чего-либо. Таблица классов поддерживает как открытые, так и закрытые классы. Обратите внимание на поле состояния. Это будет верно для open и false для закрытых. Или вы можете сделать это текстовым полем и вставить в него «открытую» или «закрытую». – e4c5

+1

@ user2564147, используя это решение, вам не нужно избавляться от openclasses. Открытые и закрытые классы хранятся вместе в одной таблице. Вам нужно будет использовать SQL, чтобы получить те, которые вы хотите заполнить в свой объект. –