Сохранение данных о песнях, исполнителях и альбомах в App Engine

Мне нужно хранить информацию о художниках, альбомах и песнях в Google App Engine для проекта, над которым я работаю. Информация представляет собой метаданные, взятые из каталога MP3 (с использованием Python), который необходимо отправить в App Engine для отображения пользователям. Наряду с метаданными, путь песни должен быть сохранен.

В настоящее время во время сканирования я храню данные в списке словарей с именем «Художники», каждый артистический словарь имеет имя и список словарей альбома, а в каждом альбоме есть имя и список словарей песен, каждая песня содержит некоторые метаданные и путь к MP3.

Я думал о способах хранения этих данных и попытался отправить данные в формате JSON в App Engine, а затем обработать это на три модели: Artist, содержащий имя и повторяющийся KeyProperty для каждого альбома, альбом затем имеет имя и повторный KeyProperty для каждой песни, а песня содержит остальную часть метаданных. Каждая из них также будет содержать KeyProperty, относящуюся к группе, к которой они принадлежат.

Проблемы с этим: много повторяющихся данных (Group Keys) и обработка данных не только часто превышают крайний срок запроса, но также используют непристойное количество записей хранилища данных.

Единственный способ, с помощью которого я мог бы решить эти проблемы, – сохранить JSON, предоставленный после сканирования, как JsonProperty, а затем передать это непосредственно пользователю для обработки на стороне клиента с помощью JavaScript. Единственная проблема, которую я мог видеть, заключается в том, что я не хочу особо указывать путь к пользователю (так как это нужно будет возвращать и действовать дальше).

Кто-нибудь имеет опыт использования или хранения данных такого типа или может предоставить любые внешние решения?

2 Solutions collect form web for “Сохранение данных о песнях, исполнителях и альбомах в App Engine”

То, что вы, вероятно, хотите, – это большая таблица песен со всем в ней. Ваш стол будет выглядеть примерно так:

Song | Artist | Album | Meta data | Track Number | Release Year | etc

Забудьте об этом как о реляционной базе данных. Подумайте об этом вместо того, как ваш пользователь будет извлекать данные. Скорее всего, все ваши поиски будут из этого основного стола.

Вам также понадобится таблица артистов, но это может просто содержать художника и их биографию. Если вы хотите увидеть все свои песни, просто отфильтруйте таблицу Songs по имени исполнителя или ID. Если вы хотите увидеть их альбомы, вы можете сделать то же самое и использовать distinct предложение (или просто набить их все в set ).

Альбом очень похож на Artists, за исключением того, что он может иметь свои собственные метаданные.

Если вы хотите код, попробуйте этот другой аналогичный вопрос .

Я обработал данные из json и поместил их в Model. Что касается схемы, вам действительно не нужно беспокоиться об избыточности, так как вы не можете действительно думать о ndb как реляционной базе данных. Поэтому не беспокойтесь о нормализации схемы.

Но не обрабатывайте на стороне клиента, это действительно не лучший способ спроектировать его так.

  • Какая структура Python для веб-службы REST / JSON без интерфейса?
  • Преобразование кортежей python, списков, словарей, содержащих объекты панды (серии / dataframes), в json
  • psycopg2: Запись объектов JSON с использованием copy_from. Как форматировать строку json?
  • Панда данных для json без индекса
  • Декодирование JSON с помощью python с использованием Appengine
  • как написать скрипт для редактирования файла JSON?
  • Доступ к словарю по ключу в шаблоне Django
  • Как конвертировать Pandas Dataframe в желаемый формат Json
  •  
    Interesting Posts for Van-Lav

    Проверка делимости для (вида) больших чисел в python

    Найдите и замените дубликаты в массиве, но замените каждый n-й экземпляр на другую строку

    Список и проблемы дублирования объектов в Python

    Сигналы и слоты PyQt4

    Python – получить исходные аргументы функции в декораторе

    Растеризация слоя GDAL

    Разница в opencv hog-дескрипторе, вычисленная в python и c ++

    Связывание c ++ – класс для boost_python в cygwin

    Как создать именованный временный файл в Windows на Python?

    Django / djcelery 1.8.2 AppRegistryNotReady: переводная инфраструктура не может быть инициализирована

    Почему Flask не должен развертываться со встроенным сервером?

    Запись в файлы Python только для файлов gzipped

    Накладные расходы / производительность данных Python

    Попытка реализовать 2 «потока» с использованием модуля `asyncio`

    Независимый от системы способ использования python для получения корневого каталога / диска, на котором установлен python

    Python - лучший язык программирования в мире.