Django 迁移mysql 数据库 为sqlite3

最初在搭建这个博客的时候数据库选用的是mysql,随着时间的变迁觉得有点大材小用了,一个博客访问量能有多高啊,使用sqllite这样的文件数据库其实更合适,并且随着最近几个项目的使用发现sqllite的性能并不差,并且管理维护起来非常方便。于是就有了迁移本博客数据库为sqlite的想法。一下为迁移步骤。

导出mysql数据

保持现有数据库配置 直接运行 python manage.py dumpdata > data.json命令,这样就将数据导出到django项目根目录下的data.json。

dumpdata 是 django 自带的管理命令,可以用来备份你的模型实例和数据库

## dumpdata 
# 整个 django 使用到的数据库转存到 db.json 文件中(备份整个数据库)
python manage.py dumpdata > db.json

# 将 admin app 转存到 admin.json 中(备份特定的 app)
python manage.py dumpdata admin > admin.json

# 将 django.admin.logentry 表中的内容备份 (备份特定的表)
python manage.py dumpdata admin.logentry > logentry.json

# dumpdata (--exclude) 剔除无需备份的表
--exclude 选择不需要备份的app或者表
--indent 加上一个代表空格数的数字 格式化输出
python manage.py dumpdata auth --exclude auth.user --indent 2 > user.json

## dumpdata (--format) 格式化输出导出的数据,支持导出数据格式为:json/xml/yaml
python manage.py dumpdata auth --exclude auth.user --indent 2 --format xml > user.json

创建sqlite数据库

修改 setting.py 文件中的数据库配置改为sqllite数据库

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.sqlite3',
        'NAME': os.path.join(BASE_DIR, 'db.sqlite3'),
        'OPTIONS': {
            'timeout': 20,
        }
    }
}

运行python manage.py migrate迁移命令创建db.sqlite3数据库文件 删除表djangocontenttype和auth_permission的所有数据,防止导入数据报错数据重复。

导入数据

直接运行python manage.py loaddata data.json命令导入数据即可。查看数据已经导入,至此博客数据库就迁移到sqllite3数据库了,当然sqlite3迁移到mysql过程差不多,逆向一下即可。 loaddata 是 django 自带的管理命令,可以用来导入固定格式的数据到数据库

python manage.py loaddata user.json # 将 user.json 中数据库导入数据库

文档信息

版权声明:可自由转载(请注明转载出处)-非商用-非衍生

发表时间:2021年7月5日 17:19