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 02 Python
python使用xmlrpclib模块实现对百度google的ping功能
Jun 02 Python
python机器学习理论与实战(一)K近邻法
Jan 28 Python
Python实现决策树C4.5算法的示例
May 30 Python
python统计多维数组的行数和列数实例
Jun 23 Python
python并发编程多进程 模拟抢票实现过程
Aug 20 Python
基于Python获取docx/doc文件内容代码解析
Feb 17 Python
如何将PySpark导入Python的放实现(2种)
Apr 26 Python
python实现数字炸弹游戏
Jul 17 Python
golang中的空接口使用详解
Mar 30 Python
pytorch训练神经网络爆内存的解决方案
May 22 Python
Python趣味挑战之用pygame实现简单的金币旋转效果
May 31 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 header函数分析详解
2011/08/06 PHP
PHP中去掉字符串首尾空格的方法
2012/05/19 PHP
php检测图片主要颜色的方法
2015/07/01 PHP
PHP中static关键字以及与self关键字的区别
2015/07/01 PHP
PHP闭包函数传参及使用外部变量的方法
2016/03/15 PHP
thinkphp 手机号和用户名同时登录
2017/01/20 PHP
ExtJS GridPanel 根据条件改变字体颜色
2010/03/08 Javascript
javascript实现日历控件(年月日关闭按钮)
2012/12/12 Javascript
Select标签下拉列表二级联动级联实例代码
2014/02/07 Javascript
javascript 获取HTML DOM父、子、临近节点
2014/06/16 Javascript
JavaScript实现鼠标点击后层展开效果的方法
2015/05/13 Javascript
javascript中mouseover、mouseout使用详解
2015/07/19 Javascript
jQuery过滤选择器用法示例
2016/09/12 Javascript
简单谈谈ES6的六个小特性
2016/11/18 Javascript
JavaScript实现网页头部进度条刷新
2017/04/16 Javascript
浅谈vue首屏加载优化
2018/06/28 Javascript
关于ligerui子页面关闭后,父页面刷新,重新加载的方法
2019/09/27 Javascript
vue 解决文本框被键盘遮住的问题
2019/11/06 Javascript
Vue状态模式实现窗口停靠功能(灵动、自由, 管理后台Admin界面)
2020/03/06 Javascript
微信小程序自定义扫码功能界面的实现代码
2020/07/02 Javascript
vue中解决拖拽改变存在iframe的div大小时卡顿问题
2020/07/22 Javascript
如何利用 JS 脚本实现网页全自动秒杀抢购功能
2020/10/12 Javascript
Python 流程控制实例代码
2009/09/25 Python
Python smallseg分词用法实例分析
2015/05/28 Python
举例讲解Python中metaclass元类的创建与使用
2016/06/30 Python
对pandas中两种数据类型Series和DataFrame的区别详解
2018/11/12 Python
python读取目录下所有的jpg文件,并显示第一张图片的示例
2019/06/13 Python
pyqt5 QlistView列表显示的实现示例
2020/03/24 Python
python单元测试框架pytest的使用示例
2020/10/07 Python
公司合作意向书
2014/04/01 职场文书
爱国卫生月活动总结范文
2014/04/25 职场文书
我爱我家教学反思
2014/05/01 职场文书
暑假社会实践心得体会
2014/09/02 职场文书
学生犯错保证书
2015/05/09 职场文书
2016年毕业实习心得体会范文
2015/10/09 职场文书
使用vue-element-admin框架从后端动态获取菜单功能的实现
2021/04/29 Vue.js