美文网首页
Django -Mysql数据库利用pymysql数据迁移

Django -Mysql数据库利用pymysql数据迁移

作者: Shawn丶 | 来源:发表于2019-03-31 15:33 被阅读0次

    Django自带的有数据库sqlite,但是有很多小伙会想用mysql的数据库,但是在sqlite上已经写了部分数据,那一定就涉及到了数据迁移。

    一、更换默认数据库

    需要在Django的项目的setting里,更改默认的数据库。

    # Database
    # https://docs.djangoproject.com/en/2.1/ref/settings/#databases
    
    DATABASES = {
        'default': {
            'ENGINE': 'django.db.backends.sqlite3',
            'NAME': os.path.join(BASE_DIR, 'db.sqlite3'),
        }
    }
    

    这是原先的默认数据库,改为下面的数据库即可。注意的是用户名密码端口等,要跟自己的mysql匹配。先不要删除原先的数据库,等会儿要用到,注释起来。

    DATABASES = {
        'default': {
            'ENGINE': 'django.db.backends.mysql',
            'NAME': 'mysite_db',
            'USER': 'root',
            'PASSWORD': 'root123456',
            'HOST': 'localhost',
            'PORT': '3306',
        }
    }
    

    二、迁移数据库

    在终端输入

     python manage.py migrate
    

    但是可能会报错。如下图


    提醒没有安装mysqlclient.png

    紧接着,有些人(如本人)去安装这个mysqlclient


    安装mysqlclient.png
    本以为可以用了,结果还是报错说本人没有安装mysqlclient。还是不能用。
    本人并不太清楚为什么mysqlclient不能用。

    在这里,本人提供另一种方法,给大家少走弯路,也是在搜索了较多网友的方法,最后选用pymysql的库。

    1、安装pymysql

    pip install pymysql
    

    2、打开项目的init.py输入

    import pymysql
    pymysql.install_as_MySQLdb()
    

    3、这时候就可以迁移数据库了。


    成功迁移数据库.png

    三、迁移数据

    这里就需要用到之前的sqlite的数据了,也就是让大家先注释起来的源代码
    1、导出数据
    把mysql的代码段注释起来,然后选用sqlite的代码段。运行下面代码

    python manage.py dumpdata > data.json
    

    此刻可以在文件夹里看到多出来的一个data.json的文件,这就是我们需要的数据
    2、导入数据
    注释掉sqlite的代码段,选用mysql的代码段。运行下面代码

    python manage.py loaddata data.json
    

    3、导入成功

    四、可能遇到的问题

    1、缓存表不存在
    缓存表不存在.png

    建立一个缓存表即可

    python manage.py createcachetable
    
    2、如果在迁移数据的时候遇见数据重复报错
    数据重复.png

    进入数据库删除两行数据即可


    删除两行代码.png

    这两个错误感谢https://www.bilibili.com/video/av26392907 ysh老师的帮助。

    相关文章

      网友评论

          本文标题:Django -Mysql数据库利用pymysql数据迁移

          本文链接:https://www.haomeiwen.com/subject/vhosbqtx.html