我执行此代码是为了在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...
我该如何解决?
除非您已删除迁移文件,否则迁移文件仍应存在。假设它们存在,您只需要应用迁移:
python manage.py migrate
如果缺少迁移文件,则需要先创建它们:
python manage.py makemigrations