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使用wmi模块获取windows下的系统信息 监控系统
Oct 27 Python
使用Python的PIL模块来进行图片对比
Feb 18 Python
python 读写、创建 文件的方法(必看)
Sep 12 Python
Python实现网络端口转发和重定向的方法
Sep 19 Python
Python实现统计代码行的方法分析
Jul 12 Python
Python2 Selenium元素定位的实现(8种)
Feb 25 Python
Python JSON格式数据的提取和保存的实现
Mar 22 Python
python爬虫神器Pyppeteer入门及使用
Jul 13 Python
详解Python对JSON中的特殊类型进行Encoder
Jul 15 Python
Django如何使用第三方服务发送电子邮件
Aug 14 Python
parser.add_argument中的action使用
Apr 20 Python
python利用platform模块获取系统信息
Oct 09 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()函数设置浏览器缓存的代码
2010/09/01 PHP
php更改目录及子目录下所有的文件后缀扩展名的代码
2010/10/12 PHP
Zend Framework实现多服务器共享SESSION数据的方法
2016/03/22 PHP
PHP使用微信开发模式实现搜索已发送图文及匹配关键字回复的方法
2017/09/13 PHP
cssQuery()的下载与使用方法
2007/01/12 Javascript
分享14个很酷的jQuery导航菜单插件
2011/04/25 Javascript
客户端js性能优化小技巧整理
2013/11/05 Javascript
js实现禁止中文输入的方法
2015/01/14 Javascript
JavaScript获取页面中表单(form)数量的方法
2015/04/03 Javascript
js实现顶部可折叠的菜单工具栏效果实例
2015/05/09 Javascript
修改Jquery Dialog 位置的实现方法
2016/08/26 Javascript
jquery配合.NET实现点击指定绑定数据并且能够一键下载
2016/10/28 Javascript
原生js开发的日历插件
2017/02/04 Javascript
canvas雪花效果核心代码分享
2017/02/19 Javascript
Angular 4依赖注入学习教程之ClassProvider的使用(三)
2017/06/04 Javascript
微信小程序开发之toast提示插件使用示例
2017/06/08 Javascript
详解Vue中一种简易路由传参办法
2017/09/15 Javascript
微信小程序网络封装(简单高效)
2018/08/06 Javascript
Vue创建头部组件示例代码详解
2018/10/23 Javascript
Vue组件模板及组件互相引用代码实例
2020/03/11 Javascript
Python标准库与第三方库详解
2014/07/22 Python
Python中运行并行任务技巧
2015/02/26 Python
python中map()与zip()操作方法
2016/02/27 Python
Python利用operator模块实现对象的多级排序详解
2017/05/09 Python
python学习教程之使用py2exe打包
2017/09/24 Python
python复制文件到指定目录的实例
2018/04/27 Python
windows下pycharm安装、创建文件、配置默认模板
2018/07/31 Python
django从请求到响应的过程深入讲解
2018/08/01 Python
Python HTML解析模块HTMLParser用法分析【爬虫工具】
2019/04/05 Python
python如何实现图片压缩
2020/09/11 Python
全球度假村:Club Med
2017/11/27 全球购物
2015年妇联工作总结范文
2015/04/22 职场文书
2015年支教教师工作总结
2015/07/22 职场文书
Django项目如何正确配置日志(logging)
2021/04/29 Python
javascript代码简写的几种常用方式汇总
2021/08/23 Javascript
MyBatis-Plus 批量插入数据的操作方法
2021/09/25 Java/Android