django数据库迁移

2020-04-09  本文已影响0人  向日葵1884

根据django官方文档建议,开发过程中会把生成的migrations提交到git中。由于各种原因,会有一些场景需要重置migrations,故总结一些常用场景及解决办法。

场景一
不考虑数据库数据,可以完全清空数据库。

步骤:

删除所有migrations

find . -path "/migrations/.py" -not -name "init.py" -delete
find . -path "/migrations/.pyc" -delete
删除数据库
重新生成migrations

python manage.py makemigrations
python manage.py migrate
场景二
有时候我们会直接导入完整的数据库,包括数据,这种情况下就不能简单的清空数据库。
这时我们的目的就是:清空数据库的migration history,保证以后的migrate能正常使用,但要保留其他数据。

步骤:

从数据库中删除所有非0001_initial的migration history

DELETE FROM django_migrations WHERE app IN ('your','app','labels') AND name != '0001_initial'
使用migrate命令回滚0001_initial的migration history

python manage.py migrate --fake your zero
python manage.py migrate --fake app zero
python manage.py migrate --fake labels zero
重新生成0001_initial,如果能保证已有0001_initial已是最新的,可跳过此步

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

python manage.py makemigrations
在数据库中生成新的0001_initial记录

python migrate --fake-initial


目录

原文来自于: https://coderwall.com/p/mvsoyg/django-dumpdata-and-loaddata

dumpdata 命令#

dumpdata 基本数据库的转存#

./manage.py dumpdata > db.json

dumpdata 备份特定的 app#

./manage.py dumpdata admin > admin.json

dumpdata 备份特定的表#

./manage.py dumpdata admin.logentry > logentry.json

./manage.py dumpdata auth.user > user.json

dumpdata (--exclude)#

./manage.py dumpdata auth.user --indent 2 > user.json

dumpdata (--format)#

./manage.py dumpdata auth.user --indent 2 --format xml > user.xml

loaddata 命令#

./manage.py loaddata user.json

迁移数据到新的数据库#

./manage.py dumpdata --exclude auth.permission --exclude contenttypes > db.json

./manage.py loaddata db.json

作者:Daryl

出处:https://www.cnblogs.com/daryl-blog/p/11003096.html

本站使用「署名 4.0 国际」创作共享协议,转载请在文章明显位置注明作者及出处。

上一篇下一篇

猜你喜欢

热点阅读