Как перенести данные Drupal в Django?

Я хочу перенести часть сайта Drupal 6 в приложение Django, в частности раздел вопросов и ответов на основе Drupal, который, как мне кажется, будет лучше работать с OSQA. Я уже создал еще один вопрос, связанный с частью аутентификации этого интеграции, и для целей этого вопроса мы можем предположить, что все пользователи Drupal будут воссозданы, по крайней мере, их имена пользователей в базе данных Django. Этот вопрос касается миграции данных с Drupal на Django.

В Drupal у меня есть все вопросы в виде узлов типа контента «вопрос» с некоторыми полями CCK, и ответы на эти вопросы являются стандартными комментариями. Мне нужна помощь, чтобы найти лучший способ перенести эти данные в OSQA в Django.

Сначала я подумал, что могу использовать Юг, но не уверен, что он лучше всего подходит для моих нужд.

На данный момент я думаю, что моим лучшим подходом было бы написать приложение Django, которое подключается к базе данных Drupal, запрашивает все вопросы с соответствующими комментариями и пользователями, а затем вставляет непосредственно в базу данных Django, используя правильные модели и методы Django.

Я на правильном пути? Есть другие предложения?

Спасибо!


person Alexis Bellido    schedule 18.02.2011    source источник
comment
Пожалуйста, дайте ссылку на этот OSQA и на другой вопрос.   -  person Mike DeSimone    schedule 18.02.2011
comment
Похоже, усилия по спасению людей от drupal оправданы.   -  person Kekoa    schedule 19.02.2011
comment
Эй, если Drupal - это то, что люди хотят, позвольте им получить это. Это 80% -ное решение. Когда кто-то обнаруживает, что они в 20%, это не похоже на взрывы Drupal или что-то в этом роде; они все еще могут использовать его во время переключения.   -  person Mike DeSimone    schedule 19.02.2011


Ответы (2)


Сначала я подумал, что могу использовать Юг, но не уверен, что он лучше всего подходит для моих нужд.

Нет, Юг не для такой миграции. Он предназначен для внутрипроектных миграций, и вы захотите его иметь, но на самом деле это не принесет вам никакой пользы.

«Миграция» - не лучший термин для обозначения того, что вам нужно. На самом деле вам нужно экспортировать данные из Drupal и импортировать их в Django.

Я не проводил углубленного анализа возможных решений для этого, но если бы меня попросили сделать то же самое, я бы просто определил формат обмена на основе JSON или XML для передачи, а затем написал бы один набор кода для экспорта данных из Drupal в этот формат, затем для импорта данных из этого формата в Django. Я настоятельно не рекомендую использовать двоичный формат для этого обмена; действительно важна возможность загружать данные в текстовый редактор для проверки ваших данных и исправления ошибок.

На данный момент я думаю, что моим лучшим подходом было бы написать приложение Django, которое подключается к базе данных Drupal, запрашивает все вопросы с соответствующими комментариями и пользователями, а затем вставляет непосредственно в базу данных Django, используя правильные модели и методы Django.

Если вы хотите пропустить обменный файл и сделать это за один шаг, тогда вы не хотите писать новое приложение Django только для импорта; это (ИМХО) перебор. Вы хотите написать команду управления Django внутри приложение, в которое вы будете импортировать данные, и вы, вероятно, захотите использовать Django's поддержка нескольких баз данных, а также свойств модели (таких как db_table и db_column) для использования существующих схем баз данных. Вот почему я рекомендую метод обмена файлами: вам не нужно повторно реализовывать таблицы Drupal в моделях Django.

person Mike DeSimone    schedule 18.02.2011
comment
Вы правы, я имел в виду экспорт из Drupal и импорт в Django (стоит ли менять заголовок вопроса?). Я думаю, что использование JSON в качестве формата обмена - отличная идея, и да, я знаю, что вы имеете в виду, редактируя данные в текстовом редакторе, это очень полезно. Я также буду следовать маршруту команд управления Django. Большое спасибо за идеи. - person Alexis Bellido; 18.02.2011

Ответ Майка - хороший путь. Однако в реальном сценарии вы можете найти полезным смешивать различные методы, например, подключиться к исходной базе данных Drupal для файлов, ссылающихся на локальный каталог для содержимого файла (запрос файлов - это простое соединение из нескольких таблиц), но обработка наиболее структурированных данных через настраиваемое представление JSON (например, узлы).

В этом случае представление JSON, созданное с помощью модуля Views Datasource, может помочь вам разработать и выбрать данные с помощью простой вид Drupal. Затем вы можете написать команду управления, чтобы прочитать и проанализировать данные, как было предложено ранее. Вы должны разбить представление на страницы таким образом, чтобы не запрашивать слишком много для обработки, и вы даже можете выполнять асинхронные запросы для ускорения извлечения с помощью gevent.

Таким образом, я проанализировал более 15 КБ содержимого менее чем за 10 минут, что не так быстро, но приемлемо для одноразового импорта. Если вы хотите сохранить контент для последующей обработки, вы можете сохранить необработанные данные в пользовательской модели в базе данных или в redis хранилище данных через интеграцию с redis python. Если вам нужны подробности, я написал подробное руководство по миграции Drupal-Django, углубляющее эти методы.

person chirale    schedule 23.01.2016