1
twor OP 或者自动部署?
|
2
myyou 2018-06-26 15:56:31 +08:00
django orm 可以用 using 选择不同的数据库,配置好多个数据库,根据 request 的请求域名来选择数据库
|
3
twor OP @myyou
谢谢提供的思路 https://docs.djangoproject.com/en/2.0/topics/db/multi-db/ 我现在知道,在 settings.py 可以提供多个 database 的配置, 在使用中可以 通过 using 来选择切换 现在的配置是 NGINX - uWSGI - Django 不同的实例,用不同的可访问域名和 wsgi.py 。在 wsgi.py 定义 database 的变量(比如 db='firstdb'),在后面的 admin.py 或者其他 orm 里面用 using = db 来实现不同的数据库套账 可我不知掉如何访问到 wsgi 里面这个变量 db,或者 using = db 这种方式是否可行? 请指教 |
4
myyou 2018-06-26 18:40:04 +08:00 1
@twor 既然有不同个 wsgi.py
wsgi.py 有这个 os.environ.setdefault("DJANGO_SETTINGS_MODULE", "project.settings") 你也可以加一个 os.environ.setdefault("DATABASES", "db1") 然后在 settings.py, 使用 os.environ 获取” db1 “ 最后 DATABASES = {"default": MULT_DATABASES["db1"]} 其中 MULT_DATABASES = {” db1 “:{···},” db2 “:{···}} |
7
HypoChen 2018-06-26 19:30:18 +08:00
这操作风险略高啊
域名和数据库地址环境变量注入,然后用 docker compose 起,没啥大工作量 |
8
twor OP |
9
georgema1982 2018-06-27 02:26:52 +08:00 1
你没看过 django 里自带的 site 框架? https://docs.djangoproject.com/en/2.0/ref/contrib/sites/
|
10
kourim88 2018-09-05 17:22:26 +08:00
@twor 你好,终于看到跟我同样问题。一直困扰。看你上面的答案还是我还是不太明白,
在 wsgi.py 里设置 os.environ.setdefault("DATABASES", "db1") 然后在 settings.py, 如何设置来获取” db1 “呢。 在 settings.py 里设置 DATABASES = {"default": MULT_DATABASES["db1"]} 其中 MULT_DATABASES = {” db1 “:{···},” db2 “:{···}}. 如何根据用户的 ip 或者用户名或者请求的 url 来自动切换切换 db 呢。apps 里面的内容都是相同的(通用的)。想把数据库分开。 楼主能分享详细点吗?感激不尽。 |
11
twor OP |