Кто-нибудь это сделал? Это простой процесс? Мы думаем переключиться на транзакции и потому, что в последнее время mysql "обходит".
Как я могу легко преобразовать приложение Django из mySQL в PostgreSQL?
Ответ 1
Я просто использовал этот инструмент для переноса внутреннего приложения, и он отлично работал. https://github.com/maxlapshin/mysql2postgres
Ответ 2
Преобразование базы данных 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
Затем переключите свои настройки .DATABASES в настройки postgres.
Создайте таблицы в Postgresql:
$ python manage.py migrate
Теперь удалите все содержимое, автоматически созданное при переносе (django contenttypes, usergroups и т.д.):
$ python manage.py sqlflush | ./manage.py dbshell
И теперь вы можете безопасно импортировать все и сохранить свой pk одинаково!
$ python manage.py loaddata contenttype.json
$ python manage.py loaddata everything_else.json
Протестировано с помощью Django == 1.8
Ответ 3
Вы можете сделать это с помощью сериализаторов Django для вывода данных из формата MySQL в JSON, а затем обратно в Postgres. В Интернете есть несколько хороших художественных штук:
Ответ 4
Я никогда не делал этого лично, но это похоже на комбинацию dumpdata и loaddata параметры manage.py могли бы легко решить вашу проблему. То есть, если у вас нет большого количества объектов, относящихся к базе данных, живущих вне ORM, таких как хранимые процедуры.
Ответ 5
Я тоже этого не делал. Сначала я должен следовать этому руководству по миграции есть раздел MySql, который должен заботиться обо всех ваших данных. Затем django просто переключает mysql на postgre в настройках. Я думаю, это должно быть хорошо.
Я нашел еще один вопрос о stackoverflow, который должен помочь в преобразовании mysql в postgre здесь.
Ответ 6
-
python manage.py dump.data → data.json
-
Создайте базу данных и пользователя в postrgesql
- Установите только что созданную базу данных в postrgesql в качестве базы данных по умолчанию в настройках django или используйте следующую команду param --database = your_postrgesql_database.
-
Запустите syncdb для создания таблиц.
python syncdb [--database = your_postrgesql_database] --noinput
-
Создайте дамп без данных, отбросьте все таблицы и загрузите дамп. Или усечь все таблицы (таблица django_content_type с данными, которые не могут быть равны вашим старым данным - это способ для многих ошибок). На этом этапе нам понадобятся пустые таблицы в postgresql-db.
-
Когда у вас есть пустые таблицы в postgresql-db, просто загружайте свои данные:
python manage.py loaddata data.json
И будь веселым!
Ответ 7
Я написал команду управления Django, которая копирует одну базу данных в другую: https://gist.github.com/mturilin/1ed9763ab4aa98516a7d
Вам нужно добавить обе базы данных в настройки и использовать эту команду:
./manage.py copy_db from_database to_database app1 app2 app3 --delete --ignore-errors
Что круто об этой команде, так это то, что она рекурсивно копирует зависимые объекты. Например, если у модели есть 2 внешних ключа и два отношения "многие-ко-многим", они сначала копируют другие объекты, чтобы убедиться, что вы не получите ошибку нарушения внешнего ключа.