首页 > 其他分享 >djando之模型层

djando之模型层

时间:2022-12-14 20:34:52浏览次数:45  
标签:models res djando res1 objects Userinfo print 模型

模型层之前期准备

1.自带的sqlite3数据库对时间字段不敏感,有上海会展示错乱,所以我们习惯切换成常见的数据库入MySQL
django orm并不会自动帮你创建库,所以需要提前准备好

2.单独测试django某个功能层
	默认不循序单独测试某个py文件 如果想要测试某个py文件(主要是models.py)
    测试环境1:pycharm提供的python console  但是他不会保存数据,不太推荐
    测试环境2:自己搭建(自带的tests或者自己创建)
        1.拷贝manage.py前4行
        2.自己在加两行内容如下:
            import django
            django.setup()
1.django orm底层还是SQL语句,我们是可以查看的
	如果我们手上是一个QuerySet对象,那么可以直接点query查看SQL语句
  	如果想查看所有orm底层的SQL语句也可以在配置文件添加日志记录
代码如下:
import os
def main():
    os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'djangoProject2.settings')
    import django
    django.setup()
    from app01 import models   导入模块一定要在下面,要不会报错

ORM常用关键字

1.create()创建数据并直接获取当前创建的数据对象

    res = models.Userinfo.objects.create(name='jason',age='18',gender='男性',heigth='168')
    print(res)	# 对象:jason

image

2.filter() 根据条件筛选数据 结果是QuerySet对象[对象1,对象2,对象3]

    res = models.Userinfo.objects.filter()
    res1 = models.Userinfo.objects.filter(name='jason')
    print(res)
    print(res1)

image

3.first()与last():QuerySet支持索引取值,但是只支持正数,索引不存在的数据值会报错

    res0 = models.Userinfo.objects.filter()
    res = models.Userinfo.objects.filter().first()
    res1 = models.Userinfo.objects.filter().last()
    print(res0)     # <QuerySet [<Userinfo: 对象:jason>, <Userinfo: 对象:李治>, <Userinfo: 对象:闫龙龙>, <Userinfo: 对象:郑凯泽>, <Userinfo: 对象:李晓建>]>
    print(res)  # 对象:jason
    print(res1) # 对象:李晓建

image

4.update():更新数据(批量更新或者指定更新)

    res = models.Userinfo.objects.update(heigth=161)
    res1 = models.Userinfo.objects.filter(name='jason').update(age=20)
    print(res)     # 5
    print(res1)     # 1

image

5.delete():删除数据(批量删除或者指定删除)

    models.Userinfo.objects.filter().delete()	# 删除全部数据
    models.Userinfo.objects.filter(id=1).delete()  # 删除指定id的数据
ps:删库需小心,尽量不要删

6.all():查询所有数据,结果是QuerySet对象

    res = models.Userinfo.objects.all()
    print(res)  # <QuerySet [<Userinfo: 对象:jason>, <Userinfo: 对象:李治>, <Userinfo: 对象:闫龙龙>, <Userinfo: 对象:郑凯泽>, <Userinfo: 对象:李晓建>]>

image

7.values():根据指定字段获取数据值,结果是QuerySet [{},{},{},{}]

    res = models.Userinfo.objects.values()
    res1 = models.Userinfo.objects.all().values()
    res2 = models.Userinfo.objects.filter(id=8).values()
    print(res)
    print(res1)
    print(res2)

image

8.values_list():根据指定字段获取数据,结果是QuerySet [(),(),()]

    res = models.Userinfo.objects.all().values_list()
    print(res)

image

9.distinct():去重,数据要一定一模一样才可以,如果有主键参与肯定是不可以的

    res = models.Userinfo.objects.values('name').distinct()
    print(res)

image

10.order_by():根据指定条件排序,默认是升序,字段前面加负号是降序

    res = models.Userinfo.objects.all().order_by('age')	# 升序
    print(res)
    res1 = models.Userinfo.objects.all().order_by('-age') # 降序
    print(res1)

image

11.get():根据条件筛选数据并直接获取到数据对象,一旦条件不存在会直接报错,不建议使用

res = models.User.objects.get(pk=1)
print(res)

12.exclude():取反操作

res = models.User.objects.exclude(pk=1)

13.reverse() 颠倒顺序(被操作的对象必须是已经排过序的才可以)

res = models.User.objects.all()
res = models.User.objects.all().order_by('age')
res1 = models.User.objects.all().order_by('age').reverse()

14.count():统计结果集中数据的个数

res = models.User.objects.all().count()
print(res)

15.exists() 判断结果集中是否含有数据 如果有则返回True 没有则返回False

    res = models.User.objects.all().exists()
    print(res)
    res1 = models.User.objects.filter(pk=100).exists()
    print(res1)

如果你想知道你对数据库进行操作时,Django内部到底是怎么执行它的sql语句时可以加下面的配置来查看

在Django项目的settings.py文件中,在最后复制粘贴如下代码:

LOGGING = {
    'version': 1,
    'disable_existing_loggers': False,
    'handlers': {
        'console':{
            'level':'DEBUG',
            'class':'logging.StreamHandler',
        },
    },
    'loggers': {
        'django.db.backends': {
            'handlers': ['console'],
            'propagate': True,
            'level':'DEBUG',
        },
    }
}

标签:models,res,djando,res1,objects,Userinfo,print,模型
From: https://www.cnblogs.com/zhanghong1229/p/16983424.html

相关文章

  • 评价模型 - 层次分析法
    应用场景:决策模型(通过赋权,然后利用加权值来进行决策)、给指标赋权准则层:先给这5个部分进行\(5\times5\)的赋权(比如,景色相比费用略微重要,赋成3),然后对这个矩阵进行求解,得......
  • django 06 模型层
    模型层使用准备#1.django自带的sqllite3对时间字段不敏感,所以使用mysql会更常见#2.单独测试django某个功能层"""django默认是不可以单独测试py文件的"""......
  • 模板层之标签、自定义模板语法、母版(模版)的继承与导入、模型层前期准备知识点、ORM常
    模板层之标签模板语法支持if判断(支持elif):{%if条件1(可以自己写也可以用传递过来的数据)%}<p>今天又是周三了</p>{%elif条件2(可以自己写也可以用传递过......
  • 16 Java内存模型与线程_Java内存模型
    目录1Java内存模型背景2主内存与工作内存3内存间交互及约束4volatile变量特性5原子性、可见性、有序性5.1原子性5.2可见性5.3有序性6先行发生原则7总结特别说明......
  • django模板之标签、继承、模型层之ORM常用关键字
    目录模板层之标签自定义过滤器、标签及inclusion_tag(了解)模板的继承与导入(重要)模型层之前期准备ORM常用关键字(重要)nullnull模板层之标签 {%if条件1(可以自己写也可以用......
  • 《Pytorch - 逻辑回归模型》
    2020年10月4号,依然在家学习。今天是我写的第二个Pytorch程序,从今天起也算是入门了。这里是简单的实现了逻辑回归开始。回顾线性回归,线性模型如下y=wx+b,图画的丑了,意......
  • 《Pytorch - BP全连接神经网络模型》
    2020年10月4号,国内已经5号凌晨了,依然在家学习。今天是我写的第三个Pytorch程序,从今天起也算是入门了。这一次我想把之前自己手写的matlab实现的简易的传统的BP神经网络在......
  • Pytorch《LSTM模型》
    前面的博文我们讲了LSTM的原理与分析,这一篇我们用pytorch类LSTM做测试完整测试代码如下,用于进行MNIST数据集测试,主要学习LSTM类的输入输出维度。这里定义的LSTM模型是用了三......
  • 《Pytorch - CNN模型》
    2020年10月5号,依然在家学习。今天是我写的第四个Pytorch程序,这一次我想把之前基于PyTorch实现的简易的传统的BP全连接神经网络改写成CNN网络,想看看对比和效果差异。这一......
  • 《Pytorch - RNN模型》
    前言:之前的博文部分地讲解了RNN的标准结构,也用pytorch的RNNCell类和RNN类实现了前向传播的计算,这里我们再举一个例子,做一个特别简单特别简单特别简单特别简单的翻译器,目标......