具有多个数据库的GeoDjango inspectdb

时间:2019-04-09 11:22:30

标签: django postgresql postgis geodjango

我正在尝试使用Postgis在PostgreSQL数据库上运行inspectdb

要为PostgreSQL视图生成模型,我发现here应该使用以下命令:

python manage.py inspectdb --database my_schema my_view> my_view_legacy.py

但是由于PostGIS,inspectdb还会尝试访问另一种模式的视图,当它遇到geometry中的my_view类型的字段时,会引发以下错误:

django.db.utils.ProgrammingError: relation "geometry_columns" does not exist
LINE 1: SELECT "coord_dimension", "srid", "type" FROM "geometry_colu...

这似乎是catch-22:如果我指定数据库名称以使inspectdb知道要检查的视图,则无法在geometry_columns中找到public视图模式。但是,如果我未指定任何数据库名称,则它首先找不到my_view

对此有什么解决办法吗?

我的数据库模式定义为:

DATABASES = {

    'default': 
            {
            },

    'public': 
            {
            'ENGINE': 'django.db.backends.postgresql_psycopg2',
            'OPTIONS': {
                            'options': '-c search_path=public'
                        },
            'NAME': 'my_db',
            'USER': secrets.USER,
            'PASSWORD': secrets.PASSWORD,
            'HOST': 'my.host.addr',
            'PORT': '5432',
            },

    'my_schema': 
            {
            'ENGINE': 'django.contrib.gis.db.backends.postgis', 
            'OPTIONS': {
                            'options': '-c search_path=my_schema'
                        },
            'NAME': 'my_db',
            'USER': secrets.USER,
            'PASSWORD': secrets.PASSWORD,
            'HOST': 'my.host.addr',
            'PORT': '5432',
            },    
}

0 个答案:

没有答案