Как перейти с sqlite на postgres, используя локальную sqlite базу данных в Django?

У меня есть база данных 'xxxxx.db' sqlite3 и я хочу перенести данные в PostgreSQL. Я провел некоторое исследование и видел несколько вариантов, но ни один из них не сработал (PGloader и т.д.). Какие еще есть варианты? Я использую Windows, но решения в Linux также приветствуются.

Я попробовал сделать это в PowerShell (через Jupyter Notebook):

!pip install virtualenvwrapper-win
!mkvirtualenv [name]
!pip install django
!django-admin startproject [name]
cd [name]
!python manage.py startapp app
!python manage.py inspectdb
!python manage.py inspectdb > models.py
!python manage.py migrate
!manage.py runserver
!python manage.py dumpdata > data.json

Но дамп не включает данные из моей базы данных, я также изменил настройки на

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.sqlite3',
        'NAME': absolute_path_to_db/db,
    }
} 

Заранее спасибо!

Команда dumpdata [Django-doc] выполнит дамп данных активированной базы данных. Поскольку вы указываете на базу данных new, это означает, что база данных (скорее всего) пуста, и, следовательно, нет данных для дампа вообще.

Вам нужно только активировать виртуальную среду и сбросить данные, поэтому с базой данных old в качестве активной базы данных в settings.py, вы активируете виртуальную среду и сбрасываете данные в JSON файл:

. virtualenv/bin/activate
python3 manage.py dumpdata --all > data.json

с virtualenv именем каталога, в котором хранится виртуальная среда.

Далее в настройках вы можете переписать это для использования (новой) базы данных PostgreSQL, например, так:

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.postgresql',
        'NAME': '<db-name>',
        'USER': '<db-user>',
        'PASSWORD': '<db-password>',
        'HOST': '<db-host>',
        'PORT': '5432',
    }
}

Вам следует установить psycopg2 пакет [PyPi], мигрировать базу данных для создания таблиц, а затем вы можете загрузить данные из data.json с помощью loaddata команды [Django-doc]:

. virtualenv/bin/activate
pip3 install psycopg2
python3 manage.py migrate
python3 manage.py loaddata data.json
Вернуться на верх