zoukankan      html  css  js  c++  java
  • Django如何把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命令行或pycharm的命令终端中输入:

    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',
        }
    }
    
    并在项目配置目录下的__init__.py文件中加入
    import pymysql
    pymysql.install_as_MySQLdb()

    3.执行数据库迁移

    更改完配置后,执行数据库迁移操作命令,同步生成相应的表结构

    python manage.py makemigrations
    python manage.py migrate

    然后在cmd命令行或pycharm的命令终端中输入(这一步是把导出的数据同步到mysql数据库中):

    python manage.py loaddata data.json

    注意:

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

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

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

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

    ps:最后在迁移的过程中可能会出现编码的问题,当报错时,点进错误提示,我遇到的只是把decode改为encode。

  • 相关阅读:
    深度学习和神经网络的区别是什么
    各种数据类型范围
    排队接水
    最大整数
    马拉松接力赛
    合并果子
    统计学生信息(使用链表完成)
    删除数组中的元素(链表)
    求最大公约数(最小公倍数)
    十进制转化成八进制(一到十六进制)
  • 原文地址:https://www.cnblogs.com/Liu928011/p/14873564.html
Copyright © 2011-2022 走看看