Django Migratons: Каков наилучший стандартный способ сброса и загрузки данных в БД, кроме использования сторонних приложений?
Я новичок в Django и заинтересован в углубленном изучении миграций, поэтому я не хочу использовать сторонние приложения (например, flyway...)
Я хочу знать, как сбросить сотни данных в мою БД Postgres без использования сторонних приложений.
Вы можете напрямую использовать инструменты postgresql:
- pg_dump: https://docs.postgresql.fr/13/app-pgdump.html .
- pg_restore/psql: https://docs.postgresql.fr/13/app-pgrestore.html
существует функция под названием fixtures, которую вы можете использовать: это пример дампа данных
django-admin dumpdata [app_label[.ModelName] [app_label[.ModelName] ...]]
Вот что я пытался перенести мою базу данных из db.sqlite3
в PostgreSQL
.
Выгрузка данных в
data.json
файл.python manage.py dumpdata > data.json
Отредактируйте
settings.py
файл вашего проекта и измените настройки базы данных. (В моем случае я использовал PostgreSQL от Heroku. Вы можете получить все необходимые детали у соответствующих поставщиков баз данных (AWS, Heroku и т.д.).
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.postgresql_psycopg2',
'NAME': ' ',
'USER':' ',
'PASSWORD':' ’,
'HOST':' ',
'PORT':'5432'
}
}
python manage.py migrate --run-syncdb
python manage.py loaddata data.json
При возникновении ошибок:
Ошибка разбора JSON:
Убедитесь, что файл data.json
сохранен с кодировкой utf-16 LE
(угаданной VS Code).
Перейти к:
C:\Users\UserName\AppData\Local\Programs\Python\Python39\Lib\sitepackages\django\core
.
serializers\json.py
stream_or_string = stream_or_string.decode()
With:
stream_or_string = stream_or_string.decode('UTF-16')