django迁移

django迁移就是在django的models.py中创建数据库表,有django自己规定的数据库操作语法。

直接使用SQL非常麻烦,Django附带了一个对象关系映射器,简称ORM。应用ORM,可以在Python中编写Django模型,而不是在SQL中定义数据库表。模型定义数据库字段,这些字段对应于其数据库表中的列。

在Django中,如果没有迁移,就必须在使用的时候链接到数据库,并且输入一堆SQL命令,来更改模型定义,十分不便。

Django数据库迁移命令

以下摘自Taswy的博客:原文链接:https://blog.csdn.net/stonesola/article/details/69758612

数据库迁移的两大命令:

$ 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

django迁移错误

数据库的命令稍有不慎可能就会掉坑。特别是migrate命令,由于django的数据库中包含了migrations的记录,如果migrations文件丢失,很可能造成migrate失败。

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

以下是笔者所写:
删除上述表的记录项可用mysql命令:

DELETE FROM table_name [WHERE Clause]

例如:删除上述表的记录项可用mysql命令:

DELETE FROM mydatabase.auth_permission WHERE id=72;

django迁移发生错误的补救

Django的数据库迁移migration操作。当你在某个app下定义了或修改了models.py,下一步是迁移,即将修改的数据库表在mysql数据库中建立表或修改表,执行:

$ python3 manage.py makemigrations

此命令在app下的migrations目录下产生一个迁移文件,如0006_customdata.py,从文件中可以看出要进行的操作。对mysql数据库进行的操作由以下命令执行:

$ python3 manage.py migrate

此命令对所有app下migrations目录下的迁移文件均将执行,例如在本工作目录下有blog,djforms两个app,则针对这两个app的migrations目录下的迁移文件执行。迁移有的会成功,也可能有的会失败。在mysql中会保留成功的迁移,失败的迁移将在终端中给出错误信息。

如果失败的迁移不影响python程序执行,可置之不理,但在运行程序时会给出讨厌的错误信息。若希望去掉错误信息,则要从migrations目录中找到出错的迁移文件,将其删除,重新修正models.py,再执行python3 manage.py makemigrations和python3 manage.py migrate。

删除迁移文件,并不会取消以前成功执行的迁移行为。

如果迁移搞乱了怎么办?假定已经在mysql中建立了表,需要保留。

删除掉migrations目录下所有的迁移文件,并使models.py中定义的数据库表与mysql数据库中的用户定义表相一致(必须要一致)。运行

$ python3 manage.py makemigrations

此命令产生一个迁移文件,再运行

$ python3 manage.py migrate

将出现以下运行结果:

Operations to perform:Apply all migrations: admin, auth, blog, contenttypes, djforms, sessions
Running migrations:No migrations to apply.

说明所产生的迁移文件并不产生实际的迁移行为,并可消除迁移过程出现的错误提示。

需注意,不要用mysql语句删除通过models.py添加的数据库表,否则,将不能通过django的迁移重新添加同名的数据库表。

用django自带的数据库后端管理程序来管理数据库表,需将新增加数据库表填入admin.py中。例如新增表CustomData,则在admin.py中添加:

admin.site.register(models.CustomData)

django数据库迁移需注意的问题相关推荐

  1. django数据库迁移问题

    数据库迁移问题一般就是什么表已经创立,迁移不了 简单粗暴的解决方法. 把django--migrations和app下面的migrations全删除

  2. django 数据库迁移(migrate)

    首先数据库迁移的两大命令: python manage.py makemigrations & python manage.py migrate 前者是将model层转为迁移文件migrati ...

  3. Django 数据库 迁移migration “No changes detected“

    目录 "No changes detected"问题 django.db.utils.OperationalError: (1050, "Table already ex ...

  4. 【吭】Django数据库迁移问题1050, “Table ‘JiraCase‘ already exists

    数据库表已生成,但是不小心误删了对应的注册文件,导致每次要继续注册新的数据库时,都会把已存在的表进行重新注册,造成迁移数据库时报错该表已存在 错误提示: django.db.utils.Operati ...

  5. Django数据库——迁移命令

    文章目录 makemigrations migrate(常用) 拓展 makemigrations 后面指定app_name:只针对这个app生成迁移脚本(也可以指定多个) python manage ...

  6. django 数据库迁移注意事项

    image.png 记得这里不能搞数据迁移 迁移过去就本地混乱了 转载于:https://www.cnblogs.com/jeff-ideas/p/10540336.html

  7. .gitignore文件_Django项目.gitignore文件建议忽略文件清单及是否需要忽略数据库迁移文件...

    Django项目开发或改动完成后将本地代码提交到代码库(比如github)时,我们需要考虑哪些文件需要提交,哪些不需要提交.这是因为有些库文件(比如缓存文件),本地日志文件还有一些编译文件是不必要提交 ...

  8. python数据库迁移教程_django中的数据库迁移的实现

    Django是用python写的web开发框架,其特点是: 1.重量级框架,内部封装了很多的功能组件,使开发变的简便快速, 2.MVT模式:前后端分离,高内聚低耦合,m:model,与mvc中的m功能 ...

  9. (二)最新版Django项目数据库迁移;读取数据库增添删改;以及显示在html或vue前端(Django+Vue+Mysql,数据库管理数据分析网站)

    目录 1.创建django项目 2.数据库的增添删改 (1).创建models (2).数据库迁移 数据库迁移的两大命令: (3).Django处理数据库 1)查询 url配置: 输入网址 2)增删改 ...

最新文章

  1. python整理数据_Python常见数据结构整理
  2. 全球及中国奢华高档服装行业发展规划及投资价值评估报告2021年版
  3. Arduino IDE 如何添加 ESP32 开发板?
  4. 后端技术:Hibernate 和 MyBatis 哪个更好用?
  5. Spring Data MongoDB教程
  6. 工作23:vue---封装request做数据请求
  7. HP-JavaUtil: xls 操作类
  8. jquery-样式的添加删除操作
  9. bzoj 1070: [SCOI2007]修车【最小费用最大流】
  10. mysql排序规则英文 数字_如何在MySQL中为日语设置模式排序规则
  11. relative定位下要使用top、left,而不是margin-top、margin-left
  12. latex中嵌入视频文件
  13. python勒索病毒代码_勒索病毒GandCrab-v5.04完整分析
  14. 何小鹏快跑:身家暴涨50亿美元,他还愿坐经济舱吗?
  15. base64图片上传解析不了问题
  16. java tongpaiyu danliantiao_Java Pinyin.cou4方法代碼示例
  17. web前端不好找工作之web前端面试简历补救篇
  18. Luat模块应用手册-指南-Luat二次开发教程指南-功能开发教程-虚拟AT
  19. Android息屏与亮屏
  20. 找不到该项目,请确认该项目的位置

热门文章

  1. 为什么现在是做跨境电商亚马逊店群的最佳时期?
  2. 无线学习:名词解释【无线学习笔记一】
  3. 中国陶瓷、卫浴部分知名品牌名单
  4. 基于Kubernetes的CI/CDPipeline流水线解决方案
  5. cyq.data 连接mysql_CYQ.Data V5文本数据库技术原理解密
  6. 向量范数证明例题_数值与计算方法第六章向量范数和矩阵范数试题.ppt
  7. 如何将阳明心学与商业和企业管理融合
  8. Foxit MobilePDF SDK_如何快速创建一个功能丰富的PDF 阅读器
  9. 2016最新iOS开发者证书申请及安装教程
  10. 基于CEM算法的三维人脸模型贴图matlab仿真