django中的数据库迁移的实现


Posted in Python onMarch 16, 2020

Django是用python写的web开发框架,其特点是:

1.重量级框架,内部封装了很多的功能组件,使开发变的简便快速,

2.MVT模式:前后端分离,高内聚低耦合,m:model,与mvc中的m功能相同,负责和数据库交互,进行数据处理,v:view,与mvc中的c功能相同,接收请求,进行业务处理,返回应答,

t:template,与mvc中的v功能相同,负责封装构造要返回的html。

orm:对象关系映射,主要实现模型对象到数据库数据的映射。

1.首先要在models.py中建立模型类,示例:

django中的数据库迁移的实现

2.在settings.py文件中把models.py所在的子应用也要加入配置项,否则orm数据库无法别识别到

django中的数据库迁移的实现

3.将模型类在admin.py中注册

django中的数据库迁移的实现

4.接下来就是数据库迁移的命令

python manage.py migrate # 根据数据库迁移文件生成对应SQL语句并执行

# 初次执行时为了先把默认Django需要的数据库创建出来

python manage.py makemigrations # 创建数据库迁移文件

# 这次执行是为了创建app中的class模型类的迁移文件

python manage.py

# 将新添加的模型类迁移文件生成对应SQL并执行,实际创建出来对应的表

Django中默认的数据库实sqlite3

django中的数据库迁移的实现

sqlite是一款轻型的数据库,占用资源特别小,大约几百k内存就够了,它能支持windows/linux/unix等主流的操作系统,储存在磁盘文件中的一个完整的数据库,比一些流行的数据库在大部分普通数据库操作要快,简单,轻松的api,独立:没有额外依赖,支持多种开发语言,以二进制形式存储在本地,负载量在10万以下时性能更佳,省掉了对数据库服务器的远程连接甚至会更快

ps:生成迁移和执行迁移

django框架就是一款强大的ORM框架,可以不需要写sql语句就能进行应用开发。

首先需要生成迁移文件,这就“相当于”生成sql语句脚本。

python manage.py makemigrations

这样就生成了迁移文件,在相对应的项目应用中可以看到migrations文件夹下,生成一个新文件

operations = [

    migrations.CreateModel(

      name='BookInfo',

      fields=[

        ('id', models.AutoField(verbose_name='ID', serialize=False, auto_created=True, primary_key=True)),

        ('btitle', models.CharField(max_length=20)),

        ('bpub_date', models.DateTimeField()),

      ],

    ),

    migrations.CreateModel(

      name='HeroInfo',

      fields=[

        ('id', models.AutoField(verbose_name='ID', serialize=False, auto_created=True, primary_key=True)),

        ('hname', models.CharField(max_length=20)),

        ('hgender', models.BooleanField()),

        ('hcontent', models.CharField(max_length=100)),

        ('hBook', models.ForeignKey(to='booktest.BookInfo')),

      ],

    ),

  ]

django会默认为每一个表生成一个主键id。

然后,执行迁移。这样才会生成数据库表。

python manage.py migrat

到此这篇关于django中的数据库迁移的实现的文章就介绍到这了,更多相关django 数据库迁移内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Python 相关文章推荐
Python3基础之函数用法
Aug 13 Python
linux安装Python3.4.2的操作方法
Sep 28 Python
对pandas通过索引提取dataframe的行方法详解
Feb 01 Python
python 定时器,轮询定时器的实例
Feb 20 Python
pandas 如何分割字符的实现方法
Jul 29 Python
使用Python制作一个打字训练小工具
Oct 01 Python
使用pyinstaller逆向.pyc文件
Dec 20 Python
Python制作简易版小工具之计算天数的实现思路
Feb 13 Python
Python自动创建Excel并获取内容
Sep 16 Python
简述python&pytorch 随机种子的实现
Oct 07 Python
Python 实现PS滤镜中的径向模糊特效
Dec 03 Python
Pycharm 跳转回之前所在页面的操作
Feb 05 Python
django之从html页面表单获取输入的数据实例
Mar 16 #Python
Django实现将views.py中的数据传递到前端html页面,并展示
Mar 16 #Python
Python Django view 两种return的实现方式
Mar 16 #Python
Python 统计位数为偶数的数字代码详解
Mar 15 #Python
使用pygame编写Flappy bird小游戏
Mar 14 #Python
Python3.x+pyqtgraph实现数据可视化教程
Mar 14 #Python
浅谈selenium如何应对网页内容需要鼠标滚动加载的问题
Mar 14 #Python
You might like
php中json_encode中文编码问题分析
2011/09/13 PHP
PHP5常用函数列表(分享)
2013/06/07 PHP
thinkPHP5.0框架模块设计详解
2017/03/18 PHP
PHP pthreads v3使用中的一些坑和注意点分析
2020/02/21 PHP
PHP中关于php.ini参数优化详解
2020/02/28 PHP
Jquery创建一个层当鼠标移动到层上面不消失效果
2013/12/12 Javascript
jQuery链式操作实例分析
2015/11/16 Javascript
JavaScript常用基础知识强化学习
2015/12/09 Javascript
详解JS中的立即执行函数
2017/02/24 Javascript
Bootstrap表格制作代码
2017/03/17 Javascript
浅谈angular2 组件的生命周期钩子
2017/08/12 Javascript
通过js动态创建标签,并设置属性方法
2018/02/24 Javascript
关于Node.js中频繁修改代码重启服务器的问题
2020/10/15 Javascript
[04:11]DOTA2亚洲邀请赛小组赛第一日 TOP10精彩集锦
2015/01/30 DOTA
Python文本特征抽取与向量化算法学习
2017/12/22 Python
python中join()方法介绍
2018/10/11 Python
Flask框架web开发之零基础入门
2018/12/10 Python
Python判断变量名是否合法的方法示例
2019/01/28 Python
python定时检测无响应进程并重启的实例代码
2019/04/22 Python
Python 根据日志级别打印不同颜色的日志的方法示例
2019/08/08 Python
Python动态声明变量赋值代码实例
2019/12/30 Python
python打印文件的前几行或最后几行教程
2020/02/13 Python
Python要求O(n)复杂度求无序列表中第K的大元素实例
2020/04/02 Python
python 进程池pool使用详解
2020/10/15 Python
德国购买健身器材:AsVIVA
2017/08/09 全球购物
Vertbaudet西班牙网上商店:婴儿服装、童装、母婴用品和儿童家具
2019/10/16 全球购物
德国拖鞋网站:German Slippers
2019/11/08 全球购物
即兴演讲稿
2014/01/04 职场文书
网络工程师专家职业发展路线
2014/02/14 职场文书
文化产业实施方案
2014/06/07 职场文书
毕业生找工作求职信
2014/08/05 职场文书
群众路线教育实践活动学习心得体会
2014/10/30 职场文书
2014年安全工作总结范文
2014/11/13 职场文书
飞越疯人院观后感
2015/06/09 职场文书
纯CSS实现hover图片pop-out弹出效果的实例代码
2021/04/16 HTML / CSS
Java Optional<Foo>转换成List<Bar>的实例方法
2021/06/20 Java/Android