django 删除数据库表后重新同步的方法


Posted in Python onMay 27, 2018

由于项目需要,最近在用基于Python语言的一个后端框架Django开发web应用。不得不说,Django继承了Python的简洁性,用它来开发web应用简单清爽,不同于从前的SSH框架,需要单独配置每个框架,还需要通过配置将各个框架集合起来,Django就集成了SSH三个框架的功能,只需要配置好这一个框架,整个后端开发流程全部可以完成,并且配置过程简单易学,这就大大降低了程序员的使用复杂度,可以将更多的精力集中于写出好的代码,而不是纠结于工具的使用。

闲言少叙,现在就来说一说我遇到的问题和解决方案。

我们都知道Django提供了ORM的功能,可以通过操作代码中的类直接创建数据库表以及进行增删改查。但是在开发过程中,由于数据库表的重新设计,需要删除原表,并通过Django的ORM功能重新同步表。

同步命令如下:

python manage.py makemigrations
python manage.py migrate

但是在我输入命令之后报错了:

django 删除数据库表后重新同步的方法

提示说我新增的字段没有默认值(我对数据库表的修改就是增加了一个字段),然后我去百度,在stackoverflow上找到了答案,在该字段后增加一个默认值即可。但是明显这个答案没有找到我遇到问题的真正原因,因为这样做第一条命令成功执行,但是到第二条时就直接报错。

然后我又去百度,有人建议看一下框架自动生成的initial文件,该文件在当前app下的migrations目录下,打开后发现该文件内容和原表对应,也就是并没有更新,问题可能就在这了。于是我按照建议删除了这个文件重新生成。

删除文件之后重新执行命令,这次确实生成了新的initial文件,内容也已经更新,但是执行第二条命令时还是出了问题,查看数据库,空空如也,没有产生新表。崩溃。

然后又去百度,找相关问题看,看到另外一条命令:

python manage.py sqlmigrate your_app_name 0001

把your_app_name换成自己的app名字即可看到框架自动生成的创建表sql语句,于是我就这样看到了sql语句。我直接在数据库中执行了该句sql命令手动创建了表,再启动应用,可以正常启动,问题解决。

虽然这个方法有些取巧吧,似乎还是没有解释问题的症结所在,但好在很实用地解决了问题。

以上这篇django 删除数据库表后重新同步的方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
Python urllib、urllib2、httplib抓取网页代码实例
May 09 Python
python编程开发之textwrap文本样式处理技巧
Nov 13 Python
python框架django基础指南
Sep 08 Python
用Python登录好友QQ空间点赞的示例代码
Nov 04 Python
Python实现修改文件内容的方法分析
Mar 25 Python
Django基于ORM操作数据库的方法详解
Mar 27 Python
Python(Django)项目与Apache的管理交互的方法
May 16 Python
python实现机器学习之多元线性回归
Sep 06 Python
Python 获取div标签中的文字实例
Dec 20 Python
python操作gitlab API过程解析
Dec 27 Python
Django Haystack 全文检索与关键词高亮的实现
Feb 17 Python
python 引用传递和值传递详解(实参,形参)
Jun 05 Python
Django 根据数据模型models创建数据表的实例
May 27 #Python
Django使用Mysql数据库已经存在的数据表方法
May 27 #Python
django中模板的html自动转意方法
May 27 #Python
Django读取Mysql数据并显示在前端的实例
May 27 #Python
django加载本地html的方法
May 27 #Python
《与孩子一起学编程》python自测题
May 27 #Python
儿童python练习实例
May 27 #Python
You might like
php仿ZOL分页类代码
2008/10/02 PHP
php用正则表达式匹配URL的简单方法
2013/11/12 PHP
使用GDB调试PHP代码,解决PHP代码死循环问题
2015/03/02 PHP
PHP排序算法之堆排序(Heap Sort)实例详解
2018/04/21 PHP
Prototype使用指南之enumerable.js
2007/01/10 Javascript
基于jQuery架构javascript基础体系
2011/01/01 Javascript
载入jQuery库的最佳方法详细说明及实现代码
2012/12/28 Javascript
为JS扩展Array.prototype.indexOf引发的问题探讨及解决
2013/04/24 Javascript
JS对HTML标签select的获取、添加、删除操作
2013/10/17 Javascript
实现checkbox全选、反选、取消JavaScript小脚本异常
2014/04/10 Javascript
使用delegate方法为一个tr标签加一个链接
2014/06/27 Javascript
对jquery的ajax进行二次封装以及ajax缓存代理组件:AjaxCache详解
2016/04/11 Javascript
JS获取html元素的标记名实现方法
2016/10/08 Javascript
JQuery.validationEngine表单验证插件(推荐)
2016/12/10 Javascript
node.js实现的装饰者模式示例
2017/09/06 Javascript
Vue不能观察到数组length的变化
2018/06/08 Javascript
Layui table field初始化加载时进行隐藏的方法
2019/09/19 Javascript
JavaScript 类的封装操作示例详解
2020/05/16 Javascript
Python数据结构与算法之图结构(Graph)实例分析
2017/09/05 Python
详解django的serializer序列化model几种方法
2018/10/16 Python
Python3标准库之threading进程中管理并发操作方法
2020/03/30 Python
CSS3实现水平居中、垂直居中、水平垂直居中的实例代码
2020/02/27 HTML / CSS
金融专业个人求职信
2013/09/22 职场文书
《周恩来的四个昼夜》观后思想汇报范文两篇
2014/09/10 职场文书
大学生赌博检讨书
2014/09/22 职场文书
KTV门卫岗位职责
2014/10/09 职场文书
2014年小学校长工作总结
2014/12/08 职场文书
党员思想汇报材料
2014/12/19 职场文书
专业技术人员年度考核评语
2014/12/31 职场文书
学生保证书
2015/01/16 职场文书
运动会观后感
2015/06/09 职场文书
初中生活随笔
2015/08/15 职场文书
《西门豹》教学反思
2016/02/23 职场文书
SQLServer2008提示评估期已过解决方案
2021/04/12 SQL Server
详解缓存穿透击穿雪崩解决方案
2021/05/28 Redis
MySQL数据库Innodb 引擎实现mvcc锁
2022/05/06 MySQL