Web开发中通常在本地进行开发,然后将代码部署到服务器上,这里就涉及本地环境和服务器环境数据库的配置。
我使用的服务器环境是新浪云(SAE),代码部署是通过git上传到指定的GIT仓库。
要切换两个数据库配置选项,最笨的办法是部署代码时设置为服务器数据库环境,本地测试时再把配置改回本地数据库环境。
这样就面临一个开发效率问题:如何在使用一套代码的情况下,让本地和服务器自动选择正确的数据库配置呢?
记得之前在浏览Django官网时有看到multi database配置,估计跟这有关系,上去找一下,果然看到有数据库路由设置。
一个Django项目可以设置多个数据库,比如设置数据库读写分离需要设置主从数据库,而究竟选择哪个数据库需要有负责路由的类来决定。
在settings.py中,DATABASES 设置数据库的配置表,而 DATABASE_ROUTERS 则设置路由数据库的类。
指定的Router类可以实现 db_for_read,db_for_write等方法
参考官网说明:https://docs.djangoproject.com/en/1.8/topics/db/multi-db/#topics-db-multi-db-routing
如何区分当前环境是本地还是服务器呢?
我使用的服务器环境是新浪云(SAE),代码部署是通过git上传到指定的GIT仓库。
要切换两个数据库配置选项,最笨的办法是部署代码时设置为服务器数据库环境,本地测试时再把配置改回本地数据库环境。
这样就面临一个开发效率问题:如何在使用一套代码的情况下,让本地和服务器自动选择正确的数据库配置呢?
记得之前在浏览Django官网时有看到multi database配置,估计跟这有关系,上去找一下,果然看到有数据库路由设置。
一个Django项目可以设置多个数据库,比如设置数据库读写分离需要设置主从数据库,而究竟选择哪个数据库需要有负责路由的类来决定。
在settings.py中,DATABASES 设置数据库的配置表,而 DATABASE_ROUTERS 则设置路由数据库的类。
指定的Router类可以实现 db_for_read,db_for_write等方法
参考官网说明:https://docs.djangoproject.com/en/1.8/topics/db/multi-db/#topics-db-multi-db-routing
如何区分当前环境是本地还是服务器呢?
有几种方法:
1.使用导入服务器特有模块来判断,比如sae环境,如果导入sae模块成功说明是在服务器环境了。
@settings.py
# 数据库配置表
DATABASES = {
# 默认使用本地数据库
'default': {
'ENGINE': 'django.db.backends.mysql',
'NAME': 'django_gallery',
'USER': 'xxx',
'PASSWORD': 'xxx',
'HOST': '127.0.0.1',
'PORT': '