首先,我来介绍一下什么是ORM框架:

O是object,也就类对象的意思,R是relation,翻译成中文是关系,也就是关系数据库中数据表的意思,M是mapping,是映射的意思。在ORM框架中,它帮我们把类和数据表进行了一个映射,可以让我们通过类和类对象就能操作它所对应的表格中的数据。ORM框架还有一个功能,它可以根据我们设计的类自动帮我们生成数据库中的表格,省去了我们自己建表的过程。

django中内嵌了ORM框架,不需要直接面向数据库编程,而是定义模型类,通过模型类和对象完成数据表的增删改查操作。

使用django进行数据库开发的步骤如下:

配置数据库连接信息

在models.py中定义模型类

迁移

通过类和对象完成数据增删改查操作

Django框架--ORM框架--数据库的关系,如下图所示:

既然用到的数据库,那么我们就不得不提python中一个第三方模块pymysql

1. 安装pymysql

pip install PyMySQL

2. 在Django工程的同名目录下的init文件中添加如下代码:

from pymysql importinstall_as_MySQLdb

install_as_MySQLdb()

这两句代码主要作用是,让Django框架能够以ORM框架的方式调用PyMySQL模块。

3. 修改数据库配置信息

DATABASES ={'default': {'ENGINE': 'django.db.backends.mysql','HOST': '127.0.0.1', #数据库主机

'PORT': 3306, #数据库端口

'USER': 'root', #数据库用户名

'PASSWORD': 'mysql', #数据库用户密码

'NAME': 'django_demo' #数据库名字

}

}

4. 在MySQL数据库中创建数据库

create database laowang charset=utf8;

以上,我们所有的准备工作就已准备完毕了。

那么,接下来我将为大家讲解一下ORM框架如何使用。

想要使用ORM框架,我们就需要执行一下流程:

1. 定义模型类

2. 给模型类添加字段

想要定义模型类,我们就需要知道什么是模型类,直白的说模型类就是数据库中的表,模型类中的属性就是数据表中的字段。

from django.db importmodels#定义图书模型类BookInfo

classBookInfo(models.Model):

btitle= models.CharField(max_length=20)

bpub_date=models.DateField()

bread= models.IntegerField(default=0)

bcomment= models.IntegerField(default=0)

is_delete= models.BooleanField(default=False)classMeta:

db_table= 'tb_books' #指明数据库表名

注意:

使用ORM框架定义模型类时,模型类会自动帮我们在数据表中创建一个ID字段用作数据表中的字段,并且这个字段是自增长的。

3. 迁移

当我们成功的定义了模型类以后,我们需要进行数据库迁移,否则数据库中不会生成数据表。

迁移命令:

#生成数据库迁移文件

python manage.py makemigrations#执行数据库迁移文件

python manage.py migrate

提示:

需要执行数据库迁移的子应用必须要在配置文件中进行注册。

当我们的定义的模型类增加新的字段时,也要重新迁移。

当我们的数据表出现问题时,我们可以删除生成的迁移文件,然后重新迁移数据库。

既然我们已经完成了,数据模型的定义,那么接下来我就带领大家对数据库中的数据使用ORM框架进行增删改查的操作。

1. 使用ORM框架添加数据:

#第一种方式

book =BookInfo(

btitle='西游记',

bput_date=date(1988,1,1),

bread=10,

bcomment=10)

book.save()#第二种方式

BookInfo.objects.create(

btitle='西厢记',

bput_date=date(1988,1,1),

bread=3540,

bcomment=1230)

2. 使用ORM框架删除数据:

#第一种方式

BookInfo.objects.get(name='西游记').delete()

3. 使用ORM框架修改数据:

#第一种方式

book = BookInfo.objects.get(name='西游记')

book.name= '西游记后传'book.save()#第二种方式

BookInfo.objects.filter(name='西厢记').update(name='儒林外史')

4. 使用ORM框架查询数据:

基本查询方式:

#第一种方式:查询全部数据

BookInfo.objects.all()#第二种方式:查询全部符合指定条件的数据

BookInfo.objects.filter(id__gt=1)#第三种方式:查询出一条符合条件的数据

BookInfo.objects.get(name='西厢记')

高级查询方式:

'''模糊查询:

字段__contains='值'

模型类.objects.filter(字段__contains='值')

范围查询:

字段__in=[值1,....]

模型类.objects.filter(字段__in=['值1',...])

空查询:

字段__isnull=True 为空

字段__isnull=False 非空

模型类.objects.filter(字段__isnull=True)

比较查询:

字段__gt=值 --> 大于

字段__gte=值 --> 大于等于

字段__lt=值 --> 小于

字段__lte=值 --> 大于等于

模型类.objects.filter(字段__gt=值)

模型类.objects.filter(字段__gte=值)

逻辑查询:

F对象:两个端相互比较时使用F对象

from django.db.models import F

BookInfo.objects.filter(bread__gte=F('bcomment'))

Q对象:一般是使用逻辑或(|)时使用Q对象

from django.db.models import Q

BookInfo.objects.filter(Q(bread__gt=20) | Q(pk__lt=3))

聚合函数:

Avg(字段名) 平均,

Count(字段名) 数量,

Max(字段名) 最大,

Min(字段名) 最小,

Sum(字段名) 求和

count() 统计数量

排序:

order_by(字段名) # 升序

order_by(-字段名) # 降序

关联查询:

一对多查询:

一关系的模型类.多关系模型类名小写_set.get/filter(查询条件)

一关系的模型类.自定义的related_name的值.get/filter(查询条件)

多对一查询:

多关系的模型类.外键名.get/filter(查询条件)'''

注意:

使用filter、all查询出来的数据是一个查询集,不能直接使用,想使用需要将查询集便利出来。

#获取模型类集合

book_model_list = BookInfo.objects.filter(id__gte=3)#便利模型类,将集合中的模型便利出来

for book_model inbook_model_list:print(book_model.id)print(book_model.name)

mysql django构架图_Django框架之数据库ORM框架相关推荐

  1. android 本地数据库持久化框架,android数据库持久化框架, ormlite框架,

    前言 Android中内置了SQLite,但是对于数据库操作这块,非常的麻烦.其实可以试用第3方的数据库持久化框架对之进行结构上调整, 摆脱了访问数据库操作的细节,不用再去写复杂的SQL语句.虽然这样 ...

  2. php sequelize,egg.js整合数据库ORM框架Sequelize

    在上篇文章中我们写了egg.js怎么连接mysql数据库, 而在一些较为复杂的应用中,我们可能会需要一个 ORM 框架来帮助我们管理数据层的代码.Java中有Mybatis.Hibernate.Spr ...

  3. Web框架中的ORM框架

    Web框架中的ORM框架 在 Python 实现的 Web 框架中,通过 API 接口来访问后端的视图函数,视图函数对数据库中的数据进行处理然后返回给前端.在这个过程中,视图函数不是直接通过 SQL ...

  4. mysql的关系图_学会sql数据库关系图

    很久以前就知道微软的Petshop的很经典,昨天抽出时间去学习,一开始还真的不适应,什么成员资格,还真的看不太懂,运行petshop想从登陆学起,但是用户名和密码都不知道,后来发现有更注册的页面,自己 ...

  5. java中轻量级数据库ORM框架:JOOQ

    1.使用maven下载 <!-- https://mvnrepository.com/artifact/org.jooq/jooq --><dependency><gro ...

  6. 【ORM框架】Python ORM框架——peewee(详细)

    文章目录 前言 一.peewee的安装和入门 1.字段类型表&Meta类型表&类型属性表 字段类型表 Meta类型表 类型属性表 2.设计表结构 防止连接丢失 二.表的设计&操 ...

  7. Java orm框架的优缺点,ORM框架的简单介绍

    1. 什么是ORM? 对象关系映射(Object Relational Mapping,简称ORM)模式是一种为了解决面向对象与关系数据库存在的互不匹配的现象的技术.简单来说,将程序中的兑现自动持久化 ...

  8. 什么是ORM框架?常用的orm框架有哪些?能否不用ORM框架直接使用SQL语句创建WebAPI?

    ORM(Object-Relational Mapping,对象关系映射)框架是一种将面向对象程序中的实体类(对象)与关系型数据库中的表之间建立映射关系的技术.它允许开发人员使用面向对象编程语言来操作 ...

  9. golang 框架_Golang:数据库ORM框架gorm详解

    欢迎关注我的头条号:Wooola,专注于Java.Golang.微服务架构,致力于每天分享原创文章.快乐编码和开源技术. 前言 之前学习过原生的Go连接MYSQL的方法,使用Go自带的"da ...

最新文章

  1. 10本计算机视觉必读经典图书,入门篇 + 提升篇
  2. 搜索引擎利用机器学习排序
  3. 阿里技术专家告诉你,如何画出优秀的架构图?
  4. 人均阅读18本,揭露2022全国职场人阅读报告
  5. Atitit mybatis快速开发 的sql api接口
  6. Vmware里安装 Ubuntu16.04 + 安装Vmware-tools
  7. 安装python3并安装paramiko
  8. CAD:计算三角形的外接圆圆心
  9. linux找不到无线网卡么,找不到无线网卡解决办法
  10. 软考常用计算公式及理解
  11. 如何查询电脑本机出厂序列号
  12. PPT如何制作形状动画?
  13. 总是在崩溃的边缘徘徊,可能这就是成年人的生活吧!!!!
  14. 计算机高级搜索文章内容,外文信息计算机检索
  15. 电子爱好者都应该至少有一台示波器
  16. Cisco(64)——路由策略综合
  17. Ubuntu下,Kdevelop的简单使用与调试
  18. #HTML5 Web App项目秀#国内首款大型HTML5页游《黎明帝国》开发背后
  19. 中国超级计算机 北京大学,北京大学
  20. pip install pulp出错

热门文章

  1. 第二十节:Scrapy爬虫框架之使用Pipeline存储
  2. C++反汇编第一讲,认识构造函数,析构函数,以及成员函数
  3. Python学习笔记(一)——基本知识点
  4. MAC/PHY与MII(GMII/SGMII/RGMII)(一)
  5. 火车图 、jackson图
  6. 数据结构 顺序串笔记
  7. vijos 1464 积木游戏 DP
  8. Kibana+Logstash+Elasticsearch 日志查询系统
  9. label用js,jquery取值赋值,以及怎么在后台取值
  10. 《java入门第一季》之类面试题