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用于url解码和中文解析的小脚本(python url decoder)
Aug 11 Python
详解Python3.1版本带来的核心变化
Apr 07 Python
python安装oracle扩展及数据库连接方法
Feb 21 Python
Python-Tkinter Text输入内容在界面显示的实例
Jul 12 Python
Django ORM 查询管理器源码解析
Aug 05 Python
numpy 返回函数的上三角矩阵实例
Nov 25 Python
Python使用pymysql模块操作mysql增删改查实例分析
Dec 19 Python
Python操作Excel把数据分给sheet
May 20 Python
10款最佳Python开发工具推荐,每一款都是神器
Oct 15 Python
tensorflow学习笔记之tfrecord文件的生成与读取
Mar 31 Python
Python文件的操作示例的详细讲解
Apr 08 Python
tensorflow中的梯度求解及梯度裁剪操作
May 26 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
绿山咖啡和蓝山咖啡
2021/03/04 新手入门
由php if 想到的些问题
2008/03/22 PHP
smarty模板判断数组为空的方法
2015/06/10 PHP
PHP匿名函数和use子句用法实例
2016/03/16 PHP
PHP使用mysqli操作MySQL数据库的简单方法
2017/02/04 PHP
js中如何复制一个对象并获取其所有属性和属性对应的值
2013/10/24 Javascript
jQuery 1.9使用$.support替代$.browser的使用方法
2014/05/27 Javascript
在JavaScript中使用开平方根的sqrt()方法
2015/06/15 Javascript
jQuery平滑旋转幻灯片特效代码分享
2015/09/07 Javascript
JavaScript 浏览器兼容性总结及常用浏览器兼容性分析
2016/03/30 Javascript
为什么JavaScript没有块级作用域
2016/05/22 Javascript
jQuery 限制输入字符串长度
2016/06/20 Javascript
jquery 获取select数组与name数组长度的实现代码
2016/06/20 Javascript
jQuery 操作input中radio的技巧
2016/07/18 Javascript
浅谈JS中String()与 .toString()的区别
2016/10/20 Javascript
Bootstrap CSS组件之输入框组
2016/12/17 Javascript
js控制一个按钮是否可点击(可使用)disabled的实例
2017/02/14 Javascript
jquery animate动画持续运动的实例
2017/11/29 jQuery
微信小程序人脸识别功能代码实例
2019/05/07 Javascript
Vue项目使用localStorage+Vuex保存用户登录信息
2019/05/27 Javascript
浅谈Vue static 静态资源路径 和 style问题
2020/11/07 Javascript
在Python中使用PIL模块处理图像的教程
2015/04/29 Python
python 迭代器和iter()函数详解及实例
2017/03/21 Python
Numpy array数据的增、删、改、查实例
2018/06/04 Python
利用python脚本如何简化jar操作命令
2019/02/24 Python
python常用函数与用法示例
2019/07/02 Python
解决pyqt5异常退出无提示信息的问题
2020/04/08 Python
python3 re返回形式总结
2020/11/20 Python
戴尔新西兰官网:Dell New Zealand
2020/01/07 全球购物
乡镇网格化管理实施方案
2014/03/23 职场文书
消防安全宣传口号
2014/06/10 职场文书
打架赔偿协议书范本
2014/10/26 职场文书
先进事迹材料范文
2014/12/29 职场文书
岳麓书院导游词
2015/02/03 职场文书
如何用Python搭建gRPC服务
2021/06/30 Python
电脑只能进入安全模式无法正常启动的解决办法
2022/04/08 数码科技