如何将Django本地应用的数据库数据迁移到生产环境对应应用
Django本地数据库数据迁移至生产环境的可实现方法
方法1:Django内置dumpdata/loaddata(跨数据库兼容)
- 本地端导出全量数据:执行命令
python manage.py dumpdata > all_data.json- 若要规避权限、内容类型等内置表的主键冲突问题,可添加排除参数:
python manage.py dumpdata --exclude auth.permission --exclude contenttypes --exclude admin.logentry --exclude sessions.session > all_data.json
- 若要规避权限、内容类型等内置表的主键冲突问题,可添加排除参数:
- 将导出的
all_data.json文件上传至生产服务器的Django项目根目录 - 生产端先完成所有表结构迁移:执行命令
python manage.py migrate - 生产端执行数据导入:
python manage.py loaddata all_data.json - 适用场景:本地和生产数据库类型不同、数据量较小的场景,无需额外安装工具
方法2:同类型数据库原生导出导入(适合大数据量)
如果本地和生产使用的数据库类型、大版本一致,用数据库自带的导出导入工具性能远高于Django自带工具:
MySQL操作流程
- 本地导出数据库:
mysqldump -u 本地用户名 -p 本地数据库名 > db_backup.sql - 上传sql文件到生产服务器后导入:
mysql -u 生产用户名 -p 生产数据库名 < db_backup.sql
PostgreSQL操作流程
- 本地导出数据库:
pg_dump 本地数据库名 > db_backup.sql - 生产导入:
psql 生产数据库名 < db_backup.sql - 适用场景:数据量十万条以上、数据库类型一致的场景,导入速度快
方法3:第三方Django扩展工具(支持定制化同步)
如果需要筛选部分数据同步、或者定期增量同步,可以使用成熟的第三方扩展:
django-import-export:支持自定义同步的模型、字段范围,可手动筛选需要迁移的数据,适配小范围同步需求django-dbbackup:封装了数据库备份、加密、传输、恢复的全流程,适合常态化的生产数据同步运维场景
注意事项
所有操作执行前必须先备份生产环境现有数据库,避免操作失误导致数据丢失
若生产环境已经存在用户生成的新数据,禁止直接全量覆盖,需先完成新旧数据合并再执行导入操作
内容的提问来源于stack exchange,提问作者Shreyash mishra
相关产品推荐
相关产品推荐

