Как я могу легко конвертировать приложение Django из mySQL в PostgreSQL? - PullRequest
11 голосов
/ 11 февраля 2011

Кто-нибудь делал это? Это простой процесс? Мы думаем о переходе на транзакции, и потому, что в последнее время mysql, похоже, «выкидывает».

Ответы [ 7 ]

13 голосов
/ 08 мая 2015

Преобразование базы данных MySQL в базу данных Postgres с помощью Django

Сначала сделайте резервную копию ваших старых данных базы данных Mysql в приспособлениях json:

$ python manage.py dumpdata contenttypes --indent=4 --natural-foreign > contenttype.json
$ python manage.py dumpdata --exclude contenttypes --indent=4 --natural-foreign > everything_else.json

Затем переключите ваши настройки. Базы данных для настроек postgres.

Создание таблиц в Postgresql:

$ python manage.py migrate

Теперь удалите весь контент, который автоматически создается при переносе (типы контента django, группы пользователей и т. Д.):

$ python manage.py sqlflush | ./manage.py dbshell

И теперь вы можете безопасно импортировать все и сохранить свой ПК таким же!

$ python manage.py loaddata contenttype.json
$ python manage.py loaddata everything_else.json

Протестировано с Джанго == 1,8

4 голосов
/ 16 февраля 2011

Я просто использовал этот инструмент для переноса внутреннего приложения, и он работал чудесно. https://github.com/maxlapshin/mysql2postgres

2 голосов
/ 15 июня 2012

Вы можете сделать это, используя сериализаторы Django для вывода данных из формата MySQL в JSON, а затем обратно в Postgres.В Интернете есть несколько хороших рассуждений об этом:

Перенос Django из MySQL в PostgreSQL простым способом

Перемещение сайта Django в PostgreSQL: check

1 голос
/ 11 февраля 2011

Я никогда не делал этого лично, но похоже, что комбинация dumpdata и loaddata параметров manage.py могла бы решить вашу проблему довольно легко.То есть, если у вас нет много специфичных для базы данных вещей, живущих вне ORM, таких как хранимые процедуры.

0 голосов
/ 30 апреля 2014

Я написал команду управления Django, которая копирует одну базу данных в другую: https://gist.github.com/mturilin/1ed9763ab4aa98516a7d

Вам необходимо добавить обе базы данных в настройках и использовать эту команду:

./manage.py copy_db from_database to_database app1 app2 app3 --delete --ignore-errors

Что здорово в этой команде, так это то, что она рекурсивно копирует зависимые объекты. Например, если модель имеет 2 внешних ключа и два отношения «многие ко многим», она сначала скопирует другие объекты, чтобы гарантировать отсутствие ошибки нарушения внешнего ключа.

0 голосов
/ 18 февраля 2013
  1. python manage.py dump.data >> data.json

  2. Создание базы данных и пользователя в postrgesql

  3. Установите вашу только что созданную базу данных в postrgesql как базу данных по умолчанию в настройках django или используйте param --database = your_postrgesql_database следующие шаги
  4. Запустите syncdb для создания таблиц.

    python syncdb [--database = your_postrgesql_database] --noinput

  5. Создать дамп без данных, удалить все таблицы и загрузить дамп. Или обрежьте все таблицы (таблица django_content_type с данными, которые могут быть не равны вашим старым данным - это путь ко многим ошибкам). На этом этапе нам нужны пустые таблицы в postgresql-db.

  6. Если у вас есть пустые таблицы в postgresql-db, просто загрузите ваши данные:

    python manage.py loaddata data.json

И будь веселее!

0 голосов
/ 11 февраля 2011

Я тоже этого не делал. Сначала я бы следовал этому руководству по миграции , там есть раздел MySql , который должен позаботиться обо всех ваших данных. Тогда django просто переключите mysql на postgre в настройках. Я думаю, что все должно быть в порядке.

Я нашел другой вопрос по stackoverflow, который должен помочь с преобразованием mysql в postgre здесь .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...