Changing Django development Database from the default SQLite to PostgreSQL

when you are changing the database you might get a UNICODEERRO:'utf-8'

UnicodeDecodeError: 'utf-8' codec can't decode byte 0xff in position 0: invalid start byte

After wasting more than 5 days I finally got the solution .. you will never got that accurate error in internet, I figured it out by myself .

python manage.py dumpdata > datadump.json

then change the database settings.py as per your desired database and then apply the following commands ...

python manage.py makemigrations
python manage.py migrate
python manage.py loaddata datadump.json

and then if u got the error I have mentioned earlier, please follow step by step guide :

1.Install notepad ++
2.open your datadum.json file in notepad++
3.on the bottom right corner you will get the encoding will be anything else than utf-8
4.on the top bar select encoding to UTF-8

you are good to go ..then again

python manage.py load data datadump.json

I have suffered a lot for this ...so please upvote, and shares are also appreciated. Thank you! and for more clearance, you can watch this video:https://youtu.be/RBtEr3TXNwg


You can try the following steps:

1. Install psycopg2 to configure the database:

pip install psycopg2


2. Inside the default settings.py

Change original values:

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.sqlite3',
        'NAME': os.path.join(BASE_DIR, 'db.sqlite3'),
    }
}

To:

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.postgresql_psycopg2',
        'NAME': 'NAME_OF_DB',
        'USER': 'DB_USER_NAME',
        'PASSWORD': 'DB_PASSWORD',
        'HOST': 'localhost',
        'PORT': 'PORT_NUMBER',
    }
}


3. Migrate the DB:

python manage.py makemigrations
python manage.py migrate


EDIT: Thanks @robotHamster comment. Here is the method to sync the existing data:

Backup the data first:

python manage.py dumpdata > datadump.json

After changing the DB setting:

python manage.py loaddata datadump.json


Source: What's the best way to migrate a Django DB from SQLite to MySQL?

Hope I am not late. So to my experience if you already have data in your sqlite db, you might face some challenges because some fields in sqlite don't directly match with fields in postgres. For example datetime, and boolean fields.

I found a library that helped me to do this:

https://github.com/Hitman23/pgloader

The library does any needed conversions.


Here is a great tutorial on how to do this from Django Girls

It shows you the installation as well as the required changes in settings.py.