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脚本将Bing的每日图片作为桌面的教程
May 04 Python
python清除字符串里非字母字符的方法
Jul 02 Python
PyChar学习教程之自定义文件与代码模板详解
Jul 17 Python
python实现电脑自动关机
Jun 20 Python
Python之list对应元素求和的方法
Jun 28 Python
Python-ElasticSearch搜索查询的讲解
Feb 25 Python
pyqt5 键盘监听按下enter 就登陆的实例
Jun 25 Python
python求平均数、方差、中位数的例子
Aug 22 Python
Python单元测试与测试用例简析
Nov 09 Python
解决安装新版PyQt5、PyQT5-tool后打不开并Designer.exe提示no Qt platform plugin的问题
Apr 24 Python
浏览器常用基本操作之python3+selenium4自动化测试(基础篇3)
May 21 Python
python中redis包操作数据库的教程
Apr 19 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在引号前面添加反斜杠(PHP去除反斜杠)
2013/09/28 PHP
JS实现浏览器菜单命令
2006/09/05 Javascript
DOMAssitant最新版 DOMAssistant 2.5发布
2007/12/25 Javascript
jQuery textarea的长度进行验证
2009/05/06 Javascript
JS request函数 用来获取url参数
2010/05/17 Javascript
另一个javascript小测验(代码集合)
2011/07/27 Javascript
jQuery插件jQuery-JSONP开发ajax调用使用注意事项
2013/11/22 Javascript
javascript引用赋值(地址传值)用法实例
2015/01/13 Javascript
一看就懂:jsonp详解
2015/06/01 Javascript
javascript下拉列表菜单的实现方法
2015/11/18 Javascript
Javascript中的对象和原型(二)
2016/08/12 Javascript
使用JavaScript获取Request中参数的值方法
2016/09/27 Javascript
JS+CSS3制作炫酷的弹窗效果
2016/11/08 Javascript
原生js开发的日历插件
2017/02/04 Javascript
微信小程序 MD5的方法详解及实例代码
2017/03/10 Javascript
文本溢出插件jquery.dotdotdot.js使用方法详解
2017/06/22 jQuery
webpack4手动搭建Vue开发环境实现todoList项目的方法
2019/05/16 Javascript
在vue中把含有html标签转为html渲染页面的实例
2019/10/28 Javascript
微信小程序音乐播放器开发
2019/11/20 Javascript
Python程序设计入门(4)模块和包
2014/06/16 Python
Python中文编码那些事
2014/06/25 Python
Python脚本实现DNSPod DNS动态解析域名
2015/02/14 Python
python输入错误密码用户锁定实现方法
2017/11/27 Python
python使用xslt提取网页数据的方法
2018/02/23 Python
python学习开发mock接口
2019/04/28 Python
Django重置migrations文件的方法步骤
2019/05/01 Python
Scrapy框架基本命令与settings.py设置
2020/02/06 Python
美国单身专业人士在线约会网站:EliteSingles
2019/03/19 全球购物
倩碧澳大利亚官网:Clinique澳大利亚
2019/07/22 全球购物
澳大利亚人信任的清洁平台,您的私人管家:Jarvis
2020/12/25 全球购物
如何开启linux的ssh服务
2013/06/03 面试题
企划专员岗位职责
2013/12/09 职场文书
个人素质的自我评价分享
2013/12/16 职场文书
家庭教育先进个人事迹材料
2014/01/24 职场文书
公务员四风问题对照检查材料整改措施
2014/09/26 职场文书
《巨人的花园》教学反思
2016/02/19 职场文书