Django3--ORM

Django–ORM

它可以不懂sql语句的小白也能操作数据库,但是有时sql语句效率偏低,需要自己写sql语句

类 表

对象 记录

对象属性 记录某个字段对应的值

1.配置models.py

注释的是sql原型语句,我们这创建一个数据库

class User(models.Model):
    #id int primary_key auto_increment  
    id=models.AutoField(primary_key=True)
    #username varchar(32)
    username=models.CharField(max_length=32)
    #charfield必须指定max_length参数
    #password int
    password=models.IntegerField()

2.在该项目命令窗口下输入迁移命令

python manage.py makemigrations

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-hmsG6q4u-1626359082404)(C:\Users\one\AppData\Roaming\Typora\typora-user-images\image-20210709084205914.png)]

发现migrations下多了个文件

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ggQPv0Zr-1626359082409)(C:\Users\one\AppData\Roaming\Typora\typora-user-images\image-20210709084251217.png)]

打开该文件发现,这个文件是做记录的,当你在命令框下面输入

python manage.py migrate

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-WC0BUuJp-1626359082411)(C:\Users\one\AppData\Roaming\Typora\typora-user-images\image-20210709084750534.png)]

它会都会真正创建数据库

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ikFaaQao-1626359082413)(C:\Users\one\AppData\Roaming\Typora\typora-user-images\image-20210709090204725.png)]

注意:只要你改了models.py中数据相关的代码,就必须重新执行上述命令

字段的增删改查
(1)字段的增加

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-3WXVignb-1626359082417)(C:\Users\one\AppData\Roaming\Typora\typora-user-images\image-20210709101525130.png)]

1.可以在终端内直接输入默认值

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-xaFWJHRT-1626359082418)(C:\Users\one\AppData\Roaming\Typora\typora-user-images\image-20210709101633816.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-wFQmMYZR-1626359082421)(C:\Users\one\AppData\Roaming\Typora\typora-user-images\image-20210709101838869.png)]

2.该字段可以为空

info=models.CharField(max_length=32,verbose_name=‘个人简介’,null=True)

3.直接给字段设置默认值

hobby=modles.CharField(max_length=32,verbose_name=‘爱好’,default=‘study’)

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-YxMpIMT6-1626359082425)(C:\Users\one\AppData\Roaming\Typora\typora-user-images\image-20210709102151245.png)]

(2)字段的修改

直接修改代码然后执行数据库迁移命令即可

(3)字段的删除
在实际开发中,操作models.py一定要细心,千万不要随便注释一些字段,执行前最好检查下

直接注释掉需要删除的字段然后再执行数据库迁移命令即可

数据的增删改查

(1)增

#直接获取用户数据存入数据库
from app01 import models
res=models.User.objects.create(username=username,password=password)
#返回值就是当前被创建的对象本身


方法二:
from app01 import models
user_obj=models.User(username=username,password=password)
user_obj.save()#保存数据

(2)查

filter()

res=models.UserInfo.objects.filter(**kwargs)

返回的结果是一个querySet对象,你可以把它看作一个列表数据对象[数据1对象,数据2对象…。]

支持索引和切片操作,但是不支持负数

.first()方法

filter括号内可以写多个参数,查询的时候默认是and关系

去数据库里查询数据
from app01 import models
res = models.User.objects.filter(username=username)
 #相当于 select * from user where username='username'
 #<QuerSet [<User :User object>]> [数据对象1,数据对象2..。]
 user_obj=res[0]
 print(user_obj)
 print(user_obj.username)
 print(user_obj.password)   

er object>]> [数据对象1,数据对象2…。]
user_obj=res[0]
print(user_obj)
print(user_obj.username)
print(user_obj.password)


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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值