django 06 模型层

模型层使用准备

复制代码
# 1.django自带的sqllite3对时间字段不敏感,所以使用mysql会更常见
# 2.单独测试django某个功能层
       """django默认是不可以单独测试py文件的"""
       想测试某个py文件(主要是models.py):
       -1.测试环境1: pycharm提供的python console
       -2.测试环境2: 使用自带的tests或自己创建
            步骤1:拷贝manage.py前四行
            步骤2:自己加两行,并调用函数
                    import django
                    django.setup()
             """
             import os
             import sys
             
def main(): os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'djangoday05.settings') import django django.setup()
main()
""" # 3.查看django的orm底层sql语句 -1. 我们手上是一个QuerySet对象,那么可以直接点query查看SQL语句。 -2. 查看所有orm底层的SQL语句也可以在配置文件添加日志记录
复制代码

 

ORM关键字

复制代码
# ORM查询关键字
   1. create()           # 创建数据并直接获取当前创建的数据对象
      """ 
       res = models.User.objects.create(name='tom',age=24)
       res = models.User.objects.create(name='liyuu',age=24)    
      """
2. filter() # 根据条件筛选数据,结果是QuertySet [数据对象1,数据对象2] """ res = models.User.objects.filter(name='hanser',age=29) """ 3.first()/last() # QuerySet支持索引取值但是只支持正数,不推荐使用索引取值 """ res = models.User.objects.filter(pk=100)[0] # 数据不存在索引值直接报错 res = models.User.objects.filter(pk=100).first() # 数据不存在不报错而是返回none res = models.User.objects.filter(pk=100).last() res = models.User.objects.filter(pk=1).first() # 数据存在返回一个对象 res = models.User.objects.filter(pk=1).last() """ 4.update # 更新数据 """ res = models.User.objects.filter(id=1).update() """ 5.delete # 删除数据 """ res = models.User.objects.filter().delete() """ 6.all # 查询所有数据 """ res = models.User.objects.all() """ 7.values() # 根据指定字段获取数据,结果是QuerySet [{},{},{},{}] """ res = models.User.objects.all().values('name') res = models.User.objects.filter().values() res = models.User.objects.values() """ 8.values_list() # 根据指定字段获取数据 结果是QuerySet [(),(),(),()] """ res = models.User.objects.all().values_list('name','age') """ 9.distinct() # 去重,主键不一样也不行 """ res = models.User.objects.values('name','age').distinct() """ 10.order_by() # 根据指定条件排序,默认是升序,字段前面加负号就是降序 """ res = models.User.objects.all().order_by('age') print(res) """ 11.get() # 根据条件筛选数据并直接获取到数据对象,一旦条件不存在会直接报错 """ res = models.User.objects.get(pk=1) print(res) res = models.User.objects.get(pk=100, name='jason') print(res) """ 12.exclude() # 取反操作 """ res = models.User.objects.exclude(pk=1) print(res) """ 13.reverse() # 颠倒顺序(被操作的对象必须是已经排过序) """ res = models.User.objects.all() res = models.User.objects.all().order_by('age') res1 = models.User.objects.all().order_by('age').reverse() print(res, res1) """ 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) """
复制代码

 

posted @   橘子菌菌n  阅读(20)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)
· winform 绘制太阳,地球,月球 运作规律
点击右上角即可分享
微信分享提示