将 SQLite 用于本地 Django 和服务器上的 Postgres

tex*_*nic 3 database sqlite django postgresql

我开始将 Django 开发作为一个爱好项目。到目前为止,我在开发(即使用py manage.py runserver)和部署(在 Nginx + uWSGI 上)都愉快地使用了 SQLite 。现在我还想学习使用更强大的 PostgreSQL 数据库。但是,如果可能,我想跳过在本地安装它,以避免在 Windows 上安装 Postgres。

我想知道是否有可能通过 Django 在部署中使用内置服务器和 Postgres 时使用 SQLite,而无需更改项目代码。找不到怎么做。

我可以使用一种解决方法并使我的部署过程在每次部署时更改服务器上的设置。但这有点像黑客。

Kro*_*nig 5

您可以拆分settings.py多个设置文件,例如

[projectname]/
??? [projectname]/
?   ??? __init__.py
?   ??? settings/
?   ?   ??? base.py
?   ?   ??? development.py
?   ?   ??? production.py
?   ??? urls.py
?   ??? wsgi.py
??? manage.py
Run Code Online (Sandbox Code Playgroud)

base.py包含当前 settings.py 中的所有代码。在您的development.py(sqlite3) 和production.py(postgresql) 中指定不同的数据库并base.py在每个数据库中导入

from .base import *
Run Code Online (Sandbox Code Playgroud)

最后但并非最不重要的是,您必须告诉 django 它应该使用哪个文件。添加

export DJANGO_SETTINGS_MODULE="projectname.settings.development"
Run Code Online (Sandbox Code Playgroud)

到您的开发服务器上的 virtualenv 的 postactivate 和

export DJANGO_SETTINGS_MODULE="projectname.settings.production"
Run Code Online (Sandbox Code Playgroud)

在您的生产服务器上。不要忘记

unset DJANGO_SETTINGS_MODULE
Run Code Online (Sandbox Code Playgroud)

在您的预停用中。

更多信息在这里:http : //www.marinamele.com/taskbuster-django-tutorial/settings-different-environments-version-control btw。一个很棒的教程,有很多最佳实践