【发布时间】:2015-10-21 22:42:14
【问题描述】:
在我的 GeoDjango 项目中,我想连接到旧版 PostgreSQL/PostGIS 数据库。它包含以下架构:
- data // 包含所有地理空间数据
- django // 空的,由我创建
- public //系统表如
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',
},
}
如何实际配置 Django 使用 django 架构,而“数据”模型连接到 data 架构?
读数
【问题讨论】:
-
@falsetru 自动数据库路由器的文档没有提到如何处理一个数据库中的多个模式。
-
@JJD 你找到这个问题的答案了吗?谢谢!
-
@AbzRockers 只有您可以阅读的内容here。
-
@JJD 感谢您的回复!我认为如果它解决了您的问题,您应该将其标记为正确答案,我忽略了这个问题的答案,因为它没有标记正确答案,也没有投票。
标签: django postgresql database-schema postgis geodjango