对Django本地和服务器上的Postgres使用SQLite
我从Django开发作为一个爱好项目开始。到目前为止,我在开发(即使用对Django本地和服务器上的Postgres使用SQLite,django,database,postgresql,sqlite,Django,Database,Postgresql,Sqlite,我从Django开发作为一个爱好项目开始。到目前为止,我在开发(即使用py manage.py runserver)和部署(在Nginx+uWSGI上)中愉快地使用了SQLite。现在我还想学习使用更健壮的PostgreSQL数据库。但是,如果可能的话,我想跳过本地安装,以避免在Windows上安装Postgres 我想知道,在部署中使用内置服务器和Postgres时,是否可以通过Django使用SQLite,而不更改项目代码。找不到该怎么做 我可以使用变通方法,使我的部署过程在每次部署时更改服
py manage.py runserver
)和部署(在Nginx+uWSGI上)中愉快地使用了SQLite。现在我还想学习使用更健壮的PostgreSQL数据库。但是,如果可能的话,我想跳过本地安装,以避免在Windows上安装Postgres
我想知道,在部署中使用内置服务器和Postgres时,是否可以通过Django使用SQLite,而不更改项目代码。找不到该怎么做
我可以使用变通方法,使我的部署过程在每次部署时更改服务器上的设置。但这是一种黑客行为。您可以将
设置.py
拆分到多个设置文件中,例如
[projectname]/
├── [projectname]/
│ ├── __init__.py
│ ├── settings/
│ │ │── base.py
│ │ │── development.py
│ │ │── production.py
│ ├── urls.py
│ └── wsgi.py
└── manage.py
您的base.py
包括当前设置.py中的所有代码。在development.py
(sqlite3)和production.py
(postgresql)中指定不同的数据库,并在每个数据库中导入base.py
from .base import *
最后但并非最不重要的一点是,您必须告诉django应该使用哪个文件。加
export DJANGO_SETTINGS_MODULE="projectname.settings.development"
到您的开发服务器上的VirtualNV后期激活,然后
export DJANGO_SETTINGS_MODULE="projectname.settings.production"
在生产服务器上。别忘了
unset DJANGO_SETTINGS_MODULE
在你的反应前
更多信息如下:
顺便说一句,这是一个很好的教程,有很多最佳实践将
settings.py
替换为
settings/
│── __init__.py
│── base.py
│── development.py
│── production.py
在\uuuu init\uuuuu.py中
import os
app_stage = os.environ.get('DJANGO_APP_STAGE', 'dev')
if app_stage == 'prod':
from .production import *
else:
from .development import *
最后,当您启动应用程序进行生产时,请确保设置了env DJANGO\u app\u STAGE='prod'
在各自的文件中创建数据库设置,就可以了。只需在开发机器上安装PostgreSQL即可。通过这种方式,您可以获取生产数据,并在本地复制和调试问题。在开发/测试和生产中使用不同的堆栈不是一个好主意。Django不会为您处理的数据库之间存在很多差异,因此您在生产过程中必然会遇到本地没有发生的问题。@mu_太短了,谢谢您的提醒。我的测试也在服务器上完成,因此它的配置几乎与生产相同。此外,对于这个项目的模式是非常简单的,所以我希望Django将管理。不过,我会注意问题,并会尽快切换。我甚至已经在考虑使用SQLite进行生产,以保持事物的等效性。