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中的线程进行网络编程的入门教程
Apr 15 Python
Python实现自动添加脚本头信息的示例代码
Sep 02 Python
flask使用session保存登录状态及拦截未登录请求代码
Jan 19 Python
Python基于pandas实现json格式转换成dataframe的方法
Jun 22 Python
python队列Queue的详解
May 10 Python
python实现海螺图片的方法示例
May 12 Python
树莓派实现移动拍照
Jun 22 Python
python实现高斯投影正反算方式
Jan 17 Python
通过实例解析Python return运行原理
Mar 04 Python
python新手学习可变和不可变对象
Jun 11 Python
详解查看Python解释器路径的两种方式
Oct 15 Python
python中validators库的使用方法详解
Sep 23 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 读取文件头判断文件类型的实现代码
2013/08/05 PHP
php实现的中文分词类完整实例
2017/02/06 PHP
基于Jquery的$.cookie()实现跨越页面tabs导航实现代码
2011/03/03 Javascript
全面兼容的javascript时间格式化函数(比较实用)
2014/05/14 Javascript
node.js中的fs.appendFileSync方法使用说明
2014/12/17 Javascript
jQuery随机密码生成的方法
2015/03/09 Javascript
移除AngularJS下URL中的#字符的方法
2015/06/19 Javascript
Seajs是什么及sea.js 由来,特点以及优势
2016/10/13 Javascript
vue.js绑定class和style样式(6)
2016/12/09 Javascript
JS打开摄像头并截图上传示例
2017/02/18 Javascript
vue-cli构建项目下使用微信分享功能
2018/05/28 Javascript
详解如何在nuxt中添加proxyTable代理
2018/08/10 Javascript
解决Angular2 router.navigate刷新页面的问题
2018/08/31 Javascript
更优雅的微信小程序骨架屏实现详解
2019/08/07 Javascript
Nuxt使用Vuex的方法示例
2019/09/06 Javascript
jQuery实现移动端笔触canvas电子签名
2020/05/21 jQuery
状态机的概念和在Python下使用状态机的教程
2015/04/11 Python
归纳整理Python中的控制流语句的知识点
2015/04/14 Python
win10下Python3.6安装、配置以及pip安装包教程
2017/10/01 Python
Python实现删除排序数组中重复项的两种方法示例
2019/01/31 Python
使用Python实现微信拍一拍功能的思路代码
2020/07/09 Python
Pandas替换及部分替换(replace)实现流程详解
2020/10/12 Python
纯CSS3制作漂亮带动画效果的主机价格表
2015/04/25 HTML / CSS
Forever 21美国官网:美国标志性快时尚品牌
2017/02/20 全球购物
美国沃尔玛网上超市:Walmart
2020/08/14 全球购物
Java中的异常处理机制的简单原理和应用
2013/04/27 面试题
会计毕业生自我鉴定
2013/11/04 职场文书
公关关系专员的自我评价分享
2013/11/20 职场文书
普通院校学生的自荐信
2013/11/27 职场文书
中学教师教育感言
2014/02/21 职场文书
考试诚信承诺书
2014/05/23 职场文书
活动总结新闻稿
2014/08/30 职场文书
财务务虚会发言材料
2014/10/20 职场文书
冰峪沟导游词
2015/02/09 职场文书
超级礼物观后感
2015/06/15 职场文书
python利用while求100内的整数和方式
2021/11/07 Python