doccano中的sqlite数据迁移到mysql

时间:2024-10-16 14:58:07
  1. 导出数据

    • 在进行任何迁移操作之前,先从现有的 SQLite 数据库中导出数据。

    python manage.py dumpdata > data.json

  2. 更新数据库配置

    • 修改 base.py 文件中的数据库配置,将 SQLite 配置更改为 MySQL 配置。根据你提供的代码片段,确保配置如下:

    DATABASES = {
        "default": {
            "ENGINE": "django.db.backends.mysql",
            "NAME": env("DB_NAME", "django"),  # MySQL 数据库名称
            "USER": env("DB_USER", "root"),  # MySQL 用户名
            "PASSWORD": env("DB_PASSWORD", "network"),  # MySQL 密码
            "HOST": env("DB_HOST", "localhost"),  # MySQL 服务器地址
            "PORT": env("DB_PORT", "3306"),  # MySQL 端口,通常为 3306
            # "OPTIONS": {
            #     "init_command": "SET sql_mode='STRICT_TRANS_TABLES'",
            #     "charset": "utf8mb4",  # 确保支持多语言字符
            # },
        }
    }

修改 cli.py 文件中的数据库配置:

os.environ.setdefault("DATABASE_URL", "mysql://root:network@localhost:3306/django")

  1. 删除旧的迁移文件(可选):

    • 如果迁移文件中包含了特定于 SQLite 的内容,可以选择删除旧的迁移文件并重新生成。

    find . -path "*/migrations/*.py" -not -name "__init__.py" -delete
    find . -path "*/migrations/*.pyc"  -delete

  2. 创建新的迁移文件

    • 运行 makemigrations 命令生成新的迁移文件。

    python manage.py makemigrations

  3. 应用迁移

    • 运行 migrate 命令将迁移应用到 MySQL 数据库。

    python manage.py migrate

  4. 导入数据到 MySQL 数据库

    • 使用 loaddata 命令将之前导出的数据导入到 MySQL 数据库。

    python manage.py loaddata data.json