关于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使用Pandas对csv文件进行数据处理的方法

Python使用Pandas对csv文件进行数据处理的方法

今天接到一个新的任务,要对一个140多M的csv文件进行数据处理,总共有170多万行,尝试了导入本地的MySQL数据库进行查询,结果用Navicat导入直接卡死....估计是XAMPP套...

python 中文件输入输出及os模块对文件系统的操作方法

整理了一下python 中文件的输入输出及主要介绍一些os模块中对文件系统的操作。 文件输入输出 1、内建函数open(file_name,文件打开模式,通用换行符支持),打开文件返回文...

python3下pygame如何实现显示中文

python3下pygame如何实现显示中文

这篇文章主要介绍了python3下pygame如何实现显示中文,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 1.先看代码: im...

解决PyCharm不运行脚本,而是运行单元测试的问题

解决方案: 1、选择Edit Configurations, 删除相关单元测试 2、右击__name__ == "__main__",点击运行即可。 以上这篇解决PyCharm不运行脚本...

在Python中操作字符串之startswith()方法的使用

 startswith()方法检查字符串是否以str开始,任选限制匹配与给定索引的开始和结束。 语法 以下是startswith()方法的语法: str.startswit...