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

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

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

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

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

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

спасибо!

2 ответов


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

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

"миграции" не очень хороший термин для того, что вам нужно. Что вы действительно хотите сделать, это экспорт данные от Drupal и импорт его в Джанго.

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

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

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


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

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

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