django - 在本地为 Django 使用 SQLite,在服务器上使用 Postgres

标签 django database postgresql sqlite

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

我想知道是否可以通过 Django 在部署中使用内置服务器和 Postgres 时使用 SQLite,而无需更改项目代码。找不到如何操作。

我可以使用变通方法,让我的部署过程在每次部署时更改服务器上的设置。但这有点像 hack。

最佳答案

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

[projectname]/
├── [projectname]/
│   ├── __init__.py
│   ├── settings/
│   │   │── base.py
│   │   │── development.py
│   │   │── production.py
│   ├── urls.py
│   └── wsgi.py
└── manage.py

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

from .base import *

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

export DJANGO_SETTINGS_MODULE="projectname.settings.development"

在你的开发服务器上你的 virtualenv 的 postactivate 和

export DJANGO_SETTINGS_MODULE="projectname.settings.production"

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

unset DJANGO_SETTINGS_MODULE

在您的预停用中。

更多信息在这里:http://www.marinamele.com/taskbuster-django-tutorial/settings-different-environments-version-control 顺便提一句。包含大量最佳实践的精彩教程

关于django - 在本地为 Django 使用 SQLite,在服务器上使用 Postgres,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40687373/

相关文章:

mysql - 尝试连接三个表,其中主表与子表没有直接关系

php - postgresql 数据库表字段中的奇怪字符

mysql - 连接多个远程数据库中的表

spring - 使用 Spring 的 Tomcat 数据源池中的所有连接都处于事件状态

python - 如何在 Django 中使用 Count Q 过滤器

django - django 模板中的变量减法

django - 如何在 Django 中将 pdf 作为电子邮件附件发送

mysql - 将 SQL 查询从 Postgres 移动到 MariaDB 时出错

Mysql - 如何在每周、每周的特定日期和时间将数据从一个表传输到另一个表?

php - 如何将链接/网页返回的值存储在 php 变量中