Django框架从入门到精通(第三章orm组件)

4 篇文章 3 订阅
1 篇文章 0 订阅

文章目录

前言:

经过我们之前的学习了解了Django的模板语法与使用规则,从这章开始就要向下深入,了解Django是怎么操作数据库的

在学习python时,小编学会了一个第三方库就是pymysql,那么在Django中我们需要一个插件就是mysqlclient,等同于pymysql,首先我们安装一下

pip install mysqlclient

ORM:

可以帮我们做两件事:

  1. 创建,修改,删除数据库中的表(就不用写sql语句了),但是它不能帮我们创建数据库
  2. 操作数据库中的表

接下来我们自己创建数据库

  1. 启动mysql服务
  2. 自己创建数据库

Django链接数据库

打开settings.py文件

找到这里

 然后将下面的代码放到这里(将原来的注释掉)

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.mysql',
        # 数据库名字
        'NAME': 'csdn',
        # 数据库账号
        'USER': 'csdn',
        # 数据库密码
        'PASSWORD': 'rootroot',
        # 数据库本机位置默认127.0.0.1
        'HOST': '127.0.0.1',
        # 默认端口
        'PORT': 3306,
    }
}

这样我们的django就连接到了我们的mysql数据库,接下来我们进入下一步用django操作表

  • 创建表
  • 删除表
  • 修改表

然后找到app目录下的models.py,我们所有的建表都写到这里

接下来再看代码看语法

首先我们要新建一个类,继承models.Model类

from django.db import models


# 必须这么写新建一个类,继承models.Model
class UserInfo(models.Model):
    # 写一个字段name为字符串类型
    name = models.CharField(max_length=32)
    # password为字符串类型
    password = models.CharField(max_length=64)
    # age为整形
    age = models.IntegerField()

写完这一段代码之后有什么用呢?

ORM组件会在底层为我们实现下面的代码

create table app名称_类的名字的小写(

        name varchar(32),
        password varchar(64),
        age int

        然后还会自动给我们加id这一列
        id bigint auto_increment primary key,
)

然后ORM就帮我们生成表,但我们需要执行两个命令才能生成表在我们的数据库中。

首先打开终端:

然后在终端执行我们的第一个命令:

python manage.py makemigrations

 然后回车等待:会出现这个结果就说明我们的操作正确


 

然后在执行这个命令

python manage.py migrate

 然后运行:这样我们就成功了

 然后你们可以去验证一下去数据库里,小编这里就不带大家演示了,然后我们说一下这两个命令

首先第一个

python manage.py makemigrations

这个命令会生成一个表我们看下面的操作

在这个目录下会给我们生成个表

然后第二个命令

python manage.py migrate

 会将表同步给数据库,这样数据库中就有这个表了,以后再新增表都要执行这两个操作

注意:

同步数据库的表时一定要先将app激活,不然会同步失败

ORM的增删改查:

  新增数据:

# 新增数据
UserInfo.objects.create(name="Love 柳")

         模板:

类名+objects+create(数据库字段="要添加的东西")   就是新增数据

然后我们打开views.py文件将数据库导入

from app01.models import UserInfo

 结合之前的代码,以后我们就可以在view.py文件中操作数据了

   删除数据:

删除有两种:

  • 删除一行
# 删除数据
UserInfo.objects.filter(id=1).delete()

filter()里面加条件,图中就是删掉id=1的那一行

  • 删除全部: 
    # 删除全部数据
    UserInfo.objects.all().delete()

 查找数据:

# 获取数据
UserInfo.objects.all()

那么获取的是什么呢我们通过type打印一下类型

print(type(UserInfo.objects.all()))

 这时我们发现是QuerySet,大家可以把它理解成为一个列表,那我们再深入一下

info = UserInfo.objects.all().first()

我们可以通过.frist获取到到对象,然后就可以通过对象从而拿到数据库中的数据

info = UserInfo.objects.all().first()
print(info.id, info.name, info.password, info.age)

最后运行一下

拿到了数据,这就是查

修改数据:

# 修改数据
UserInfo.objects.all().update(age=13)

 这段代码的含义就是把数据库中所有的age都改为13

如果只想改某一行:

# 修改某一行数据
UserInfo.objects.filter(id=1).update(age=13)

模板:

        filter(哪一行).update(什么数据)

这就是修改

总结:

这就是我们要知道的ORM组件,连接数据库及增删改查,这是我们必须要掌握的,以便于以后的开发,那么下一期呢我会给大家分享一个带有中间件的程序,只不过html没有美化,但含有Django基础(我们应该掌握的),针对于这个程序,再给大家往后面拓展,深入,你这一期就到这里。

  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值