Django Model

        Django对各种数据库都提供了很好的支持,对不同的数据库,Django提供了统一调用的API,我们可以根据不同的业务需求使用不同的数据库。

一、配置数据库:

 pip install pymysql 

如果报错可以尝试:

 python -m pip install pymysql 

       在工程目录下的__init__.py中输入:

import pymysql             
pymysql.install_as_MySQLdb()

完成数据库驱动加载

在settings.py中配置数据库连接信息        
 

'ENGINE':'django.db.backends.mysql', 

'NAME':'Learn',                        # 数据库名

'USER':'root',                         # 账号

'PASSWORD':'12345678',                 # 密码

'HOST':'localhost',                    # 本机

'PORT':'3306',                         # 默认

一般开发流程:

1. 配置数据库

2. 定义模型类(一个模型类对应数据库中的一张表)

3. 生成迁移文件

python manage.py makemigrations

4. 执行迁移生成数据表

  Python manage.py migrate

5. 使用模型类进行增删改查(CRUD)操作

存储:

        .save()

查询:

        查所有:objects.all()

        查单个:  object.get()

更新:

        基于查询的

        查好的对象,修改属性,然后sava()

删除:

        基于查询的

        调用delete()

6. 连接mysql驱动:

Mysqlclient:

        Python2,3都能直接使用

        致命缺点: 对mysql安装有要求,必须在指定位置存在配置文件

Python-mysql:

        Python2支持很好

        Python3不支持

Pymysql:

        Python2,3都支持

        它还可以伪装成前面的库

二、ORM

        ORM(Object Relational Mapping)对象关系映射,是一种程序技术,用于实现面向对象编程语言里不同类型系统的数据之间的转换。 可以简单理解为翻译机。


 核心思想,解耦合, 将业务逻辑和SQL进行了解耦。 

三、常用字段类型

models.CharField()                        
models.IntergerField()                    
models.EmailField()                       # 继承自CharField,对email的特殊处理
models.FileField()                        # 继承自CharField,对文件的特殊处理
models.TextField()                        # 布尔值
models.ForeignKey()                       # 外键
# 设置外键如果报错,需要在外键值的后面加 on_delete=models.CASCADE
models.OneToOneField()                    # 一对一
models.ManyToManyField()                  # 多对多

四、模型过滤

- filter                :返回符合筛选条件的数据集
- exclude          :返回不符合筛选条件的数据集
多个filter和exclude可以连接在一起查询

Person.objects.filter().filter().xxxx.eclude().exclude().yyyy

查询集QuerySet[] 表示从数据库获取的对象集合 查询集可以有多个过滤器 过滤器就是一个函数,基于所给的参数限制查询集结果 从SQL角度来说,查询集合和select语句等价,过滤器就像where条件

返回查询集的方法称为过滤器

    all()               返回所有数据

    filter()           返回符合条件的数据

    exclude()      过滤掉符合条件的数据

    order_by()    排序

    values()        一条数据就是一个字典,返回一个列表

tablename.object.get()获取单个对象时:

        - 查询条件没有匹配的对象,会抛异常,DoesNotExist
        - 如果查询条件对应多个对象,会抛异常,MultipleObjectsReturned

切片

- 和python中的切片不太一样
- QuerySet[5:15]  获取第五条到第十五条数据
  - 相当于SQL中limit和offset

 使用aggregate()函数返回聚合函数的值

Avg:平均值

Count:数量

Max:最大

Min:最小

Sum:求和

Student.objects().aggregate(Max('sage'))


 F对象

- 可以获取我们属性的值
- 可以实现一个模型的不同属性的运算操作
- 还可以支持算术运算

Q对象

- 可以对条件进行封装
- 封装之后,可以支持逻辑运算
  - 与  &  and
  - 或  |   or
  - 非   ~  not  

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值