django3 sqlite3迁移到mysql

1、第一步,需要一个mysql数据库。

2、建一个database, 假如叫:api_test。

3、先执行如下操作,将db.sqlite3中的数据导出来。 记得先备份一个db.sqlite3。此时settings.py的配置还是sqlites3.

    python3 manage.py dumpdata --exclude=contenttypes --exclude=auth.Permission >  data.json

4、修改settings.py:

DATABASES = {
    # "default": {
    #     "ENGINE": "django.db.backends.sqlite3",
    #     "NAME": os.path.join(BASE_DIR, "db.sqlite3"),
    # },
    "default": {
        "ENGINE": "django.db.backends.mysql",
        "NAME": "api_test",
        "USER": "****",
        "PASSWORD": "*****",
        "HOST": "*****",
        "PORT": "4306",
        "OPTIONS": {"charset": "utf8mb4"},    ##避免存了表情包等
    },
},

5、修改__init__.py:

import pymysql

pymysql.version_info = (1, 4, 13, "final", 0)
pymysql.install_as_MySQLdb()                     # 使用pymysql代替mysqldb连接数据库,默认的有时候会报错。

6、python3 manage.py makemigrations,  如果有业务库没有导过来,试试:  python3 manage.py makemigrations appName

7、python3 manage.py migrate   

8、python3 manage.py loaddata data.json,遇到如下报错,修改mysql中的表的字段的大小。

django.db.utils.DataError: Problem installing fixture '/Users/xiaozhu_wt/xiaozhu_wt/Imxiaozhu/data.json': Could not load Xz_ApiTest.DB_api_box(pk=101): (1406, "Data too long for column 'api_method' at row 1")
 

你可能感兴趣的:(学习,python)