将Django开发数据库从默认的SQLite更改为PostgreSQL

15 浏览
0 Comments

将Django开发数据库从默认的SQLite更改为PostgreSQL

我需要采取哪些步骤从默认的SQLite数据库迁移到Postgres数据库?

我这样做是为了让我的本地开发环境尽可能接近我的实时服务器(使用postrgres)。

或者说,本地开发使用SQLite的原因是什么?不建议在本地开发中使用Postgres吗?

admin 更改状态以发布 2023年5月23日
0
0 Comments

当你更改数据库时,可能会出现UNICODEERRO:'utf-8'的错误。

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

经过浪费了五天多的时间,我终于找到了解决方案...你在网上永远找不到那么准确的错误,我是自己找出来的。

python manage.py dumpdata > datadump.json

然后根据你所需的数据库更改 settings.py,然后执行以下命令...

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

如果你之前遇到了我提到的错误,请按照逐步指南操作:

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

你可以继续前进了...

python manage.py load data datadump.json

我为此受苦了很多...所以请点赞,分享也被赞赏。谢谢!

如果想要更清楚的解释,可以观看这个视频:https://youtu.be/RBtEr3TXNwg

0
0 Comments

您可以尝试以下步骤:

1. 安装psycopg2以配置数据库:

pip install psycopg2


2. 在默认的settings.py文件内:
更改原始值:

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


到:

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. 迁移数据库:

python manage.py makemigrations
python manage.py migrate


编辑:感谢@robotHamster的评论。这里是同步现有数据的方法:
首先备份数据:

python manage.py dumpdata > datadump.json


在更改DB设置后:

python manage.py loaddata datadump.json


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

0