Django框架之数据库ORM框架

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

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

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

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

  1. 配置数据库连接信息
  2. 在models.py中定义模型类
  3. 迁移
  4. 通过类和对象完成数据增删改查操作

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

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

1. 安装pymysql

pip install PyMySQL

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

from pymysql import install_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 import models

#定义图书模型类BookInfo
class BookInfo(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)

    class Meta:
        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 in book_model_list:
    print(book_model.id)
    print(book_model.name)

原文地址:https://www.cnblogs.com/chao666/p/12178210.html

时间: 2024-10-03 10:28:09

Django框架之数据库ORM框架的相关文章

Android 数据库ORM框架GreenDao学习心得及使用总结<一>

Android 数据库ORM框架GreenDao学习心得及使用总结<一> 转: http://www.it165.net/pro/html/201401/9026.html 最近在对开发项目的性能进行优化.由于项目里涉及了大量的缓存处理和数据库运用,需要对数据库进行频繁的读写.查询等操作.因此首先想到了对整个项目的数据库框架进行优化. 原先使用android本身内置的sqllite,也就是用的最基本的SQLiteOpenHelper方法,这种方法对自己来说比较方便易懂.但是在使用过程中感觉很繁

Django之自带ORM框架

前言 Django的工作流程 1.客户端发送请求到达 URL2.URL把客户端请求转发给请求函数3.视图函数 使用原生SQL或者ORM去数据库拿到数据进行渲染(模板+数据渲染)4.return 返回给客户端   Django大而全 本文主要介绍Django的ORM框架 一.使用Django的ORM 1.创建数据库 (注意设置 数据的字符编码) create database day70 default character set utf8 collate utf8_general_ci; 2.修

数据库ORM框架GreenDao

常用的数据库: 1). Sql Server2). Access3). Oracle4). Sysbase5). MySql6). Informix7). FoxPro8). PostgreSQL9). IBM 的DB2 2.特点. -oracle: 1.数据库安全性很高,很适合做大型数据库.支持多种系统平台(HPUX.SUNOS.OSF/1.VMS. WINDOWS.WINDOWS/NT.OS/2). 2.支持客户机/服务器体系结构及混合的体系结构(集中式.分布式. 客户机/服务器). -sq

【转载】Android开源:数据库ORM框架GreenDao学习心得及使用总结

转载链接:http://www.it165.net/pro/html/201401/9026.html 最近在对开发项目的性能进行优化.由于项目里涉及了大量的缓存处理和数据库运用,需要对数据库进行频繁的读写.查询等操作.因此首先想到了对整个项目的数据库框架进行优化. 原先使用android本身内置的sqllite,也就是用的最基本的SQLiteOpenHelper方法,这种方法对自己来说比较方便易懂.但是在使用过程中感觉很繁琐,从建表到对表的增删改查等操作,如果表对象的属性很多,就需要使用大量的

django指定mysql数据库 ORM查询

django原生自带数据库,不过自带的数据库是sqlite 这次使用的orm框架操作数据库 这时候你就需要换上你想用的数据库比如大众化的mysql 但是你还是首先要先安装pymysql的驱动 pip install PyMySQL 在Django的工程同名子目录的__init__.py文件中添加如下语句 from pymysql import install_as_MySQLdb install_as_MySQLdb()django 在python2.7一直使用的是db操作数据库由于django

打造android ORM框架opendroid(一)——ORM框架的使用

一.我的看法 我记得曾经有一篇博客是介绍的litepal的使用,在这篇博客中我提到过:本来以为android本身提供的API已经封装的够好了,根本不需要什么ORM框架了,但是在使用了litepal后,我感觉使用ORM框架还是很有必要的,下面是我对ORM和android API的几点看法: 1.做为API级别, android只能广义封装,而不能特定去封装一个API,所以android 对sqlite的封装已经很强大了. 2.作为开发者,我们需要为项目提供足够适配的解决方案,可能ORM框架比API

《Andorid开源》greenDao 数据库orm框架

一 前言:以前没用框架写Andorid的Sqlite的时候就是用SQLiteDatabase ,SQLiteOpenHelper ,SQL语句等一些东西,特别在写SQL语句来进行 数据库操作的时候是一件很繁琐的事情,有时候没有错误提示的,很难找到错误的地方,即费力又花时间. 现在使用greenDao就可以避免那些繁琐的SQL文了,极大的简化了对Sqlite的操作. greenDao官方网址是:http://greendao-orm.com/ greenDao官方demo下载地址:https://

django连接mysql数据库,框架映射数据库模型,省掉sql语句哦

新建一个django项目: 如下图, 添加项目目录文件:test_db,(如果文件不存在,会在该目录下新建一个文件夹) 设置app名称:testdb,在新的窗口打开项目,如图所示 其中,MVC模式中,models.py用于处理M,views.py用于处理V,urls.py用于映射视图. 1.下载pymysql:pip install pymysql 2.在项目__init__.py里添加(不是): import pymysqlpymysql.install_as_MySQLdb()如图所示: m

打造android ORM框架opendroid(二)——自动创建数据库

在上一篇博客<打造android ORM框架opendroid(一)--ORM框架的使用>中相信你已经了解了opendroid的使用,那么从这篇博客开始,我们正式进入opendroid的源码分析,打造一款自己的ORM框架! 在正式开始之前,你需要保证手里有一份opendroid的源码,如果还没下载opendroid,请到http://git.oschina.net/qibin/OpenDroid 下载opendroid的源码. 任何数据库操作都是从创建数据库开始的,今天我们就来看看opendr