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解析xml成对应的html示例分享
Apr 02 Python
Python的动态重新封装的教程
Apr 11 Python
python3实现短网址和数字相互转换的方法
Apr 28 Python
在Python中处理字符串之ljust()方法的使用简介
May 19 Python
pandas修改DataFrame列名的方法
Apr 08 Python
python梯度下降法的简单示例
Aug 31 Python
python实现机器学习之元线性回归
Sep 06 Python
python动态视频下载器的实现方法
Sep 16 Python
python实现FTP文件传输的方法(服务器端和客户端)
Mar 20 Python
jupyter lab文件导出/下载方式
Apr 22 Python
python 调用Google翻译接口的方法
Dec 09 Python
python+opencv实现车道线检测
Feb 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将向Java靠拢
2006/10/09 PHP
php array_unique之后json_encode需要注意
2011/01/02 PHP
PHP设计模式之代理模式的深入解析
2013/06/13 PHP
php中让上传的文件大小在上传前就受限制的两种解决方法
2013/06/24 PHP
PHP 动态生成静态HTML页面示例代码
2014/01/15 PHP
PHP常量及变量区别原理详解
2020/08/14 PHP
JavaScript中的对象和原型(一)
2016/08/12 Javascript
深入理解Angular中的依赖注入
2017/06/26 Javascript
jquery动态添加带有样式的HTML标签元素方法
2018/02/24 jQuery
JS使用栈判断给定字符串是否是回文算法示例
2019/03/04 Javascript
vue使用nprogress实现进度条
2019/12/09 Javascript
理解Proxy及使用Proxy实现vue数据双向绑定操作
2020/07/18 Javascript
一个计算身份证号码校验位的Python小程序
2014/08/15 Python
python中pygame针对游戏窗口的显示方法实例分析(附源码)
2015/11/11 Python
Python全局变量用法实例分析
2016/07/19 Python
python中dir()与__dict__属性的区别浅析
2018/12/10 Python
python selenium操作cookie的实现
2020/03/18 Python
python 用opencv实现图像修复和图像金字塔
2020/11/27 Python
HTML5重塑Web世界它将如何改变互联网
2012/12/17 HTML / CSS
经典c++面试题四
2015/05/14 面试题
酒吧副总经理岗位职责
2013/12/10 职场文书
函授教育个人学习的自我评价
2013/12/31 职场文书
党员公开承诺书和承诺事项
2014/03/25 职场文书
幼儿园师德演讲稿
2014/05/06 职场文书
企业优秀员工事迹材料
2014/05/28 职场文书
计算机网络专业自荐书
2014/06/09 职场文书
横幅标语大全
2014/06/17 职场文书
美化环境标语
2014/06/20 职场文书
安全伴我行演讲稿
2014/09/04 职场文书
领导干部民主生活会自我剖析材料范文
2014/09/20 职场文书
介绍信怎么写
2015/01/30 职场文书
社区三八妇女节活动总结
2015/02/06 职场文书
安全生产警示教育活动总结
2015/05/09 职场文书
雷锋的观后感
2015/06/10 职场文书
Ajax 的初步实现(使用vscode+node.js+express框架)
2021/06/18 Javascript
Pandas自定义选项option设置
2021/07/25 Python