这里是使用django的dumpdata和loaddata命令迁移数据到新数据库。
一、首先停止django服务,从旧数据库导出所有数据;
python manage.py dumpdata -o backup.json
二、创建新的数据库,并修改django配置,比如下面从sqlite切换到postgresql;
# settings.py
DATABASES = {
#'default': {
# 'ENGINE': 'django.db.backends.sqlite3',
# 'NAME': os.path.join(BASE_DIR, 'old_database.sqlite3'),
#}
'default': {
'ENGINE': 'django.db.backends.postgresql_psycopg2',
'NAME': 'new_database',
'USER': 'postgres',
'PASSWORD': 'password',
'HOST': '127.0.0.1',
'PORT': 5432,
}
}
三、给新项目迁移数据表
python manage.py migrate
不需要使用 python manage.py migrate --run-syncdb
–run-syncdb 只是多了一个 Creating tables 的步骤。
四、由于导入时候ContentType可能会导致冲突,所以需要先删除ContentType
python manage.py shell
>>> from django.contrib.contenttypes.models import ContentType
>>> ContentType.objects.all().delete()
五、最后导入旧数据库的数据即可完成。
python manage.py loaddata backup.json