当前位置: 首页 > news >正文

Django如何把SQLite数据库转换为Mysql数据库

大部分新手刚学Django开发的时候默认用的都是SQLite数据库,上线部署的时候,大多用的却是Mysql。那么我们应该如何把数据库从SQLite迁移转换成Mysql呢?

之前我们默认使用的是SQLite数据库,我们开发完成之后,里面有许多数据。如果我们想转换成Mysql数据库,那我们先得把旧数据从SQLite导出,然后再导入到新的Mysql数据库里去。

1、SQLite导出数据

导出之前,我们先确保settins.py数据库配置选项那里,还是使用的是SQLite配置,如果已经修改了,请先修改回来:

DATABASES = {'default': {'ENGINE': 'django.db.backends.sqlite3','NAME': os.path.join(BASE_DIR, 'db.sqlite3'),}
}

然后在CMD命令行里输入:

python manage.py dumpdata > data.json

这样就将数据导出到Django项目根目录下的data.json文件。

2、MySQL导入数据
同样,先将Django的数据库配置改为MySQL的:

DATABASES = {'default': {'ENGINE': 'django.db.backends.mysql','NAME': '你的数据库名','USER': '你的MySQL用户名','PASSWORD': '你的密码','HOST': 'localhost','PORT': '3306',}
}

先找到数据表对应的 migrations 文件夹,保留 __pycache__ 和 __init__.py 文件,其他的都删掉。

然后先执行下面这行命令:

python manage.py makemigrations

再执行下面这行命令:

python manage.py migrate

然后在CMD命令行里输入:

python manage.py loaddata data.json

再运行项目,发现成功运行

注意:

确保Mysql用户表里为空的,如果之前有迁移过数据到Mysql,有可能会出错。注意出错的时候所报的错误信息。如果提示有重复主键,那需要先删掉数据。这些数据是在给MySQL数据库应用迁移文件的时候产生的,一般是content_type相关的表。

进入到MySQL,执行如下的SQL语句:

use 你的数据库名;
delete from auth_permission;
delete from django_content_type;

删除数据之后,再执行一次导入命令即可。基本上,导入不了数据都是MySQL存在数据导致的。

http://www.lryc.cn/news/67805.html

相关文章:

  • 使用apisix代理静态文件
  • [元带你学NVMe协议] NVMe1.4 多路径(Multipathing)
  • Elasticsearch:如何使用自定义的证书安装 Elastic Stack 8.x
  • HADOOP--yarn ,, git
  • IOS开发指南之UITableView控件使用
  • C语言中的数据类型
  • 什么是微服务中的熔断器设计模式?
  • Ubuntu查看系统日志的几种方法
  • 【ubuntu】安装ZIP
  • DiffDock源码解析
  • 1099 Build A Binary Search Tree(超详细注解+38行代码)
  • [刷题]贪心入门
  • 项目集战略一致性
  • Linux学习 Day3
  • 前端开发推荐vscode安装什么插件?
  • 如何打造完整的客户服务体系?
  • 裸奔时代,隐私何处寻?
  • 从期望最大化(EM)到变分自编码器(VAE)
  • 【数学杂记】表达式中的 s.t. 是什么意思
  • flink watermark介绍及watermark的窗口触发机制
  • Spring Cloud: 云原生微服务实践
  • 存bean和取bean
  • 39. 组合总和
  • 100行以内Python能做那些事
  • Android 电源键事件流程分析
  • 游戏搬砖简述-1
  • 多线程基础总结
  • 视频理解AI模型分类与汇总
  • 【Linux】多线程 --- 线程同步与互斥+生产消费模型
  • 17.模型的定义