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

2019-03-31  本文已影响0人  Shawn丶

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老师的帮助。

上一篇下一篇

猜你喜欢

热点阅读