关于django 数据库迁移(migrate)应该知道的一些事

yipeiwu_com6年前Python基础

命令

首先数据库迁移的两大命令:

python manage.py makemigrations & python manage.py migrate 

前者是将model层转为迁移文件migration,后者将新版本的迁移文件执行,更新数据库。

这两中命令调用默认为全局,即对所有最新更改的model或迁移文件进行操作。如果想对部分app进行操作,就要在其后追加app name:

$ python manage.py makemigrations app_name
$ python manage.py migrate app_name

如果想要精确到某个迁移文件(0004_xxx.py):

$ python manage.py migrate app_name 0004

如果想看迁移文件的执行状态,可以用showmigrations命令查看:

$ python manage.py showmigrations
admin
 [X] 0001_initial
auth
 [X] 0001_initial
 [X] 0002_alter_permission_name_max_length

显示django已知的migrations和状态。

错误

数据库的命令稍有不慎可能就会掉坑。特别是migrate命令,由于django的数据库中包含了migrations的记录,如果migrations文件丢失,很可能造成migrate失败。所以有必要将migrations文件加入版本控制,保证开发时的migrations记录和文件相匹配。

如果migrate出现了失败,很可能是因为migration文件包含的变更信息由于当前数据库的约束无法完完成。这时就应该去数据中找到这些记录或键的位置,删掉重做即可。

一般这些数据存在的表为:外键约束对应的表、auth_permission、django_content_type和django_migrations.

以上这篇关于django 数据库迁移(migrate)应该知道的一些事就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持【听图阁-专注于Python设计】。

相关文章

Python中使用__new__实现单例模式并解析

单例模式是一个经典设计模式,简要的说,一个类的单例模式就是它只能被实例化一次,实例变量在第一次实例化时就已经固定。  在Python中常见的单例模式有None,这就是一个很典...

Python中selenium实现文件上传所有方法整理总结

文件上传是所有UI自动化测试都要面对的一个头疼问题,今天博主在这里给大家分享下自己处理文件上传的经验,希望能够帮助到广大被文件上传坑住的seleniumer。 首先,我们要区分出上传按钮...

搭建Python的Django框架环境并建立和运行第一个App的教程

搭建Python的Django框架环境并建立和运行第一个App的教程

Django是python中目前风靡的Web Framework, 那么什么叫做Framework呢, 框架能够帮助你把程序的整体架构搭建好, 而我们所需要做的工作就是填写逻辑, 而框架...

seek引发的python文件读写的问题及解决

我的需求很简单,就是统计一下我的安装脚本执行的次数和时间,格式是这样的 install_times:1|install_times:2018-09-03 15:58:46 insta...

深入了解Python数据类型之列表

一.基本数据类型 整数:int 字符串:str(注:\t等于一个tab键) 布尔值: bool 列表:list (元素的集合) 列表用[] 元祖:tuple 元祖用() 字典:dict...