Я не хочу, чтобы попасть в дискуссии SQL против NoSQL. Кроме того, я не чувствую себя достаточно информированным о вашем проекте, чтобы дать вам совет. Но, похоже, что у вас есть некоторый опыт работы с SQL, и что вы хотите:
- исследовать JSON, чтобы увидеть, что вы можете использовать в вашем приложении
- Выяснить соответствующую схему базы данных
- синтаксического анализа json и вставить их в базу данных, которую вы только что создали.
Я не искал, но, возможно, есть документация coursera по информации, предоставленной этим HTTP-запросом. Вы можете использовать это, чтобы вести разработку вашей модели.
Если нет, или если вы склонны вскакивать в данные и находить модель эмпирически, то хорошей новостью является то, что request.json() автоматически расшифровывает содержимое json в словаре.
Для изучения этого Dict, вы можете использовать dict.keys() метод
>>> r.json().keys() # returns the following line:
dict_keys(['unis', 'insts', 'cats', 'topics', 'courses'])
ли рекурсивно, чтобы получить ощущение, что под каждым узлом. Если вы нажмете списки, просмотрите несколько этих списков. Списки, вероятно, перейдут в строки в мире sql. Если списки содержат dicts, то это даст вам представление о том, какие имена полей будут. Если дальше, то dicts внутри этого списка вложенных dicts, что может указывать на отношения
Например,
>>> r.json()['unis'].keys() # gives me the following error
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
AttributeError: 'list' object has no attribute 'keys'
Итак, я попробовал,
>>> pp.pprint(r.json()['unis'][0]) # which gave me the first record
{'abbr_name': 'Stanford',
'banner': 'https://coursera-university-assets.s3.amazonaws.com/73/a47990ea7c11e3b00589d092602f0d/Stanford-University-Banner-LRG.jpg',
'class_logo': 'https://coursera-university-assets.s3.amazonaws.com/21/9a0294e2bf773901afbfcb5ef47d97/Stanford_Coursera-200x48_RedText_BG.png',
'description': 'The Leland Stanford Junior University, commonly referred to '
'as Stanford University or Stanford, is an American private '
'research university located in Stanford, California on an '
'8,180-acre (3,310 ha) campus near Palo Alto, California, '
'United States.',
'display': True,
'favicon': 'https://coursera-university-assets.s3.amazonaws.com/dc/581cda352d067023dcdcc0d9efd36e/favicon-stanford.ico',
'home_link': 'http://online.stanford.edu/',
'id': 1,
'landing_page_banner': 'https://coursera-university-assets.s3.amazonaws.com/6f/75dd30dd5911e38988193a0e8ad8fe/Stanford_Coursera-200x48_RedText_BG.jpg',
'location': 'Palo Alto, CA, United States',
'location_city': 'Palo Alto',
'location_country': 'US',
'location_lat': 37.4418834,
'location_lng': -122.14301949999998,
'location_state': 'CA',
'logo': 'https://coursera-university-assets.s3.amazonaws.com/d8/4c69670e0826e42c6cd80b4a02b9a2/stanford.png',
'name': 'Stanford University',
'partner_type': 1,
'primary_color': '#8C1515',
'rectangular_logo_svg': 'https://coursera-university-assets.s3.amazonaws.com/d6/cb68d0d09b11e3a575e17d6a22968b/SUSig_StnfrdOnly.svg',
'short_name': 'stanford',
'square_logo': 'https://coursera-university-assets.s3.amazonaws.com/e3/cebbb0d0a311e39b31794df7e5d956/Coursera-SUSig_StnfrdUStack_SQ.png',
'square_logo_source': 'https://coursera-university-assets.s3.amazonaws.com/e2/c49eb0d0a311e3ad37254033038522/Coursera-SUSig_StnfrdUStack_SQ.png',
'square_logo_svg': 'https://coursera-university-assets.s3.amazonaws.com/e0/0dbc10d0a311e3ad37254033038522/Coursera-SUSig_StnfrdUStack_SQ.svg',
'website': '',
'website_facebook': '',
'website_twitter': '',
'website_youtube': ''}
С этого момента, по наивности, я бы создайте таблицу coursera_unis со следующими полями, возвращаемыми этой строкой кода:
>>> r.json()['unis'][0].keys()
dict_keys(['website_facebook', 'location', 'website_twitter', 'square_logo', 'favicon', 'id', 'website', 'location_lng', 'logo', 'location_lat', 'partner_type', 'short_name', 'website_youtube', 'square_logo_svg', 'banner', 'primary_color', 'location_country', 'rectangular_logo_svg', 'square_logo_source', 'name', 'landing_page_banner', 'display', 'home_link', 'description', 'abbr_name', 'location_city', 'location_state', 'class_logo'])
Затем следующим шагом будет вставка данных. It's already answered in this SO thread for MySQL. Подобные варианты существуют и для других db-бэкендов, поэтому не должно быть слишком сложно.
Слишком широкий вопрос. Вы уже разобрали его, и есть тысячи способов его сохранить. – tdelaney
Проведите некоторое исследование: узнайте о различных типах баз данных NoSQL, сравните их возможности с тем, что нужно вашему приложению, выберите его и узнайте, как его использовать с Python. – Jesper