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

Zor*_*gan 5 python sqlite django postgresql

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

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

或者,本地开发使用SQLite的原因是什么?是不是建议使用Postgres进行本地开发?

R.y*_*yan 9

您可以尝试以下步骤:

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

pip install psycopg2
Run Code Online (Sandbox Code Playgroud)


2.默认情况下 settings.py

更改原始值:

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

至:

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.postgresql_psycopg2',
        'NAME': 'NAME_OF_DB',
        'USER': 'DB_USER_NAME',
        'PASSWORD': 'DB_PASSWORD',
        'HOST': 'localhost',
        'PORT': 'PORT_NUMBER',
    }
}
Run Code Online (Sandbox Code Playgroud)


3.迁移数据库:

python manage.py makemigrations
python manage.py migrate
Run Code Online (Sandbox Code Playgroud)


编辑: 谢谢@robotHamster评论.以下是同步现有数据的方法:

首先备份数据:

python manage.py dumpdata > datadump.json
Run Code Online (Sandbox Code Playgroud)

更改数据库设置后:

python manage.py loaddata datadump.json
Run Code Online (Sandbox Code Playgroud)


来源:将Django DB从SQLite迁移到MySQL的最佳方法是什么?

  • 结合 [this gist](https://gist.github.com/sirodoht/f598d14e9644e2d3909629a41e3522ad) 你也应该能够保留你的数据 (2认同)

小智 5

这是Django Girls提供的关于如何执行此操作的精彩教程

它向您显示安装情况以及 settings.py 中所需的更改。


Sai*_*jee 5

当您更改数据库时,您可能会得到 UNICODEERRO:'utf-8'

UnicodeDecodeError: 'utf-8' codec can't decode byte 0xff in position 0: invalid start byte
Run Code Online (Sandbox Code Playgroud)

浪费了 5 多天后,我终于得到了解决方案.. 你永远不会在互联网上得到那个准确的错误,我自己想出来的。

python manage.py dumpdata > datadump.json
Run Code Online (Sandbox Code Playgroud)

然后根据所需的数据库更改数据库 settings.py ,然后应用以下命令...

python manage.py makemigrations
python manage.py migrate
python manage.py loaddata datadump.json
Run Code Online (Sandbox Code Playgroud)

然后,如果您遇到我之前提到的错误,请按照分步指南进行操作:

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
Run Code Online (Sandbox Code Playgroud)

你很高兴..然后再说一次

python manage.py load data datadump.json
Run Code Online (Sandbox Code Playgroud)

我为此受了很多……所以请点赞,也感谢分享。谢谢!如需更多许可,您可以观看此视频:https : //youtu.be/RBtEr3TXNwg