Django框架学习记录(3)

简介:本章主要介绍基于Django模型使用数据库

一、配置数据库信息

以MySQL为例,需要在setting.py文件中找到DATABASES

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.mysql', # 配置为MySQL
        'NAME': 'xxx',                        # 数据库名
        'USER': 'xxxx',                       # 数据库登录账户
        'PASSWORD': 'xxxx',                   # 密码
        'HOST': '127.0.0.1',                  # 数据库ip地址
        'PORT': 3306,                         # 数据库端口号
        'OPTIONS':{
           "init_command": "set foreign_key_checks = 0;", # 取消外键约束
    }
}

需要安装mysqlclient,如果mysqlclient使用pip安装失败就去官网下载

mysqlclient · PyPIPython interface to MySQLhttps://pypi.org/project/mysqlclient/#files

二、用Django中的orm操作数据库

    orm的作用为在关系型数据库和业务实体对象之间进行映射,orm对底层进行了封装与隔离,在使用Django开发的项目时,无需关心程序使用的是mysql还是Oracle数据库,在操作具体的数据库时,也无需和复杂的SQL语句打交道,只需要使用orm提供的API操作就行。

    每个模型都是一个Python类,每个模型都会映射到一个数据库表上

类:数据库中的数据表

属性:数据库中的字段

实例:数据库表中的数据行

1、创建数据库

首先确保mysql服务是启用中的

 

 创建数据库命令:create database  fqq DEFAULT CHARSET utf8 COLLATE utf8_general_ci;

2、使用orm创建表

     所有Django模型都必须继承自Model类,Model类位于包django.db.models中。在app目录下的models.py文件中导入models

 然后执行如下命令

生成迁移文件:python manage.py makemigrations

执行迁移:python manage.py migrate

然后查看数据库里的表

 2、使用orm删除、修改表结构

删除很简单,把models.py文件中对应的类注释掉或者删除,重新执行一下上面的命令就可以了

删除列就删除models.py文件中对应的类里面的属性删掉,重新执行命令就可以了

修改也一样,把类里面对应内容替换掉,重新执行命令

3、使用orm给表增加字段

 

 因为原有的表里字段可能有默认值,所以新加的字段选第一个的话就是让你手动添加一个默认值,第二个选项是退出让你在models.py对应的类中的字段赋予一个默认值,这样才能添加成功。

from django.db import models

# Create your models here.


class UserInfo(models.Model):
    name = models.CharField(max_length=30)
    password = models.CharField(max_length=50)
    age = models.IntegerField()
    date = models.IntegerField()
    sex = models.CharField(max_length=10, default='男')
    email = models.EmailField(max_length=30, default='1234567@qq.com')
#   用下面这种方式也可以,null=True允许数据库中为空,blank=True允许admin后台中为空
#   email = models.EmailField(null=True, blank=True)  

后面加上default默认值,就可以了

 

 4、增删改查

     Django的manage工具提供了shell命令,帮助我们直接在终端中执行测试Python语句。命令如下:python .\manage.py shell

下载一个ipython,IPthon是基于Python默认CPython解释器之上的一个增强的交互式解释器,提供了颜色显示、tab补全、历史机制、集成Python调试器等功能。

pip install ipython

 1)新增数据

使用create新增

 

 使用save()新增

 

 2)更新数据

save()方法:

 

 update()方法:

 3)删除数据

 删除筛选的数据:

 

 删除所有数据:

 

 如果删除的数据有外键字段,且模型中的on_delete参数被设置为CASCADE,则删除外键关联表中的对应数据。

5、QuerySet对象

QuerySet对象也被称为“查询集”,表示从数据库获取的数据对象集合,查询集有一个最重要的特性--惰性执行。

     惰性执行是指,在创建查询集后不会访问数据库,只在调用相关方法时才会访问数据库,这些方法包括遍历迭代、系列化等。

1)all()方法

该方法用于获取模型的QuerySet对象,即获取所有的数据

 2)filter()方法

该方法用来过滤数据,和sql语句中的where语句类似,获取满足条件的数据并返回一个QuerySet对象,如果没有获取数据,就返回空的QuerySet对象。

语法:模型类.objects.filter(字段=值)

 3)get()方法

该方法用于查询数据表记录,以模型对象的形式返回符合要求的一条数据

如果没有记录或者记录超过1条,会出现错误提示,因此需要做异常捕获处理,filter方法则不会出现错误提示 

4)exclude()方法

用于排除符合条件的数据,返回QuerySet对象,语法和filter方法一致,方法中还可以使用大于、小于、模糊匹配等操作符

操作符含义具体使用
__gt大于filter(age__gt=20)
__gte大于或等于filter(age__gte=20)
__it小于filter(age__it=20)
__ite小于或等于
__in在某列表内filter(age__in=[10,20]
__contains模糊匹配filter(name__contains='王'
__year日期字段的年份filter(createdate__year=2022)
__month日期字段的月份
__day日期字段的天数

5)values()方法

用于提取需要的字段,返回QuerySet对象,该对象包含的数据类型是由指定的字段和值形成的字典

 6)distinct()方法

用于去重,返回一个QuerySet对象

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值