作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
在我的 GeoDjango 项目中,我想连接到旧版 PostgreSQL/PostGIS 数据库。它包含以下模式:
spatial_ref_sys
我希望屏幕截图中显示的 Django 表进入 django
模式。我不想污染 public
架构。
我希望“数据”模型连接到 data
模式。我已经尝试过 generate models from the legacy tables但是 python manage.py inspectdb
连接到 public
模式。
为了提供对不同模式的访问,我调整了 approach 2 of this article它将单独的 search_path
值预分配给特定的数据库用户:
-- user accessing django schema...
CREATE ROLE django_user LOGIN PASSWORD 'secret';
ALTER ROLE django_user SET search_path TO django, public;
-- user accessing data schema...
CREATE ROLE data_user LOGIN PASSWORD 'secret';
ALTER ROLE data_user SET search_path TO data, public;
然后我配置数据库连接如下:
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.postgresql_psycopg2',
'NAME': 'multi_schema_db',
'USER': 'django_user',
'PASSWORD': 'secret',
},
'data': {
'ENGINE': 'django.db.backends.postgresql_psycopg2',
'NAME': 'multi_schema_db',
'USER': 'data_user',
'PASSWORD': 'secret',
},
}
当“数据”模型连接到 data
模式时,我如何实际配置 Django 使用 django
模式?
最佳答案
您必须利用 search_path
:
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.postgresql_psycopg2',
'OPTIONS' : {
'options': '-c search_path=django,public'
},
'NAME': 'multi_schema_db',
'USER': 'django_user',
'PASSWORD': 'secret',
},
'data': {
'ENGINE': 'django.db.backends.postgresql_psycopg2',
'OPTIONS' : {
'options': '-c search_path=data,public'
},
'NAME': 'multi_schema_db',
'USER': 'data_user',
'PASSWORD': 'secret',
},
}
关于django - 如何从 Django 连接到多个 PostgreSQL 模式?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31726064/
我是一名优秀的程序员,十分优秀!