Django.db.utils.ProgrammingError:关系在Postgresql中不存在

问题描述 投票:0回答:1

我执行此代码是为了在Django和PostgreSQL数据库中导入shapefile。

import os
from django.contrib.gis.utils import LayerMapping
from .models import Adm3_names



    adm3_name_mapping = {
        'gid': 'gid',
        'adm1_code': 'adm1_code',
        'adm1_name': 'adm1_name',
        'adm2_code': 'adm2_code',
        'adm2_name': 'adm2_name',
        'adm3_code': 'adm3_code',
        'adm3_name': 'adm3_name',
        'adm3_statu': 'adm3_statu',
        'pop': 'pop',
        'pop_0to14': 'pop_0to14',
        'pop_65plus': 'pop_65plus',
        'hh': 'hh',
        'shape_leng': 'shape_leng',
        'shape_area': 'shape_area',
        'geom': 'MULTIPOLYGON',
    }

    adm3_name_shp = os.path. abspath(os.path.join(os.path.dirname(__file__),'data/vnm_polbn_adm3_2014_pdc.shp'))

    def run(verbose=True):
        lm = LayerMapping(Adm3_names, adm3_name_shp, adm3_name_mapping, transform= False, encoding='iso-8859-1')
        lm.save(strict=True,verbose=verbose)

当我第一次运行时,它可以工作并将数据导入到我的数据库中。错误地,我将数据表放在了Postgresql中...

[当我再次运行相同的代码时,它告诉我:

django.db.utils.ProgrammingError: relation "testdjango_adm3_names" does not exist
LINE 1: INSERT INTO "testdjango_adm3_names" ("gid", "adm1_code", "ad...

我该如何解决?

django postgresql geodjango
1个回答
0
投票

除非您已删除迁移文件,否则迁移文件仍应存在。假设它们存在,您只需要应用迁移:

python manage.py migrate

如果缺少迁移文件,则需要先创建它们:

python manage.py makemigrations
© www.soinside.com 2019 - 2024. All rights reserved.