神奇的双下划线查询
User表数据
id name age register_time 1 steven 18 2002-01-01 2 baby 20 2020-12-03 3 mark 28 2002-01-02 4 kevin 38 2020-12-03 5 Stark 50 2020-09-09 settings.pyDATABASES = { 'default': { 'ENGINE': 'django.db.backends.mysql', 'NAME': 'orm1', "USER":'root', 'PASSWORD':'123456', 'HOST':'127.0.0.1', 'PORT':3306, 'CHARSET':'utf8', } }
init.py
import pymysql pymysql.install_as_MySQLdb()
models.py
from django.db import models # Create your models here. class User(models.Model): name = models.CharField(max_length=32) age = models.IntegerField() register_time = models.DateField() # 年月日 def __str__(self): return '对象:%s' % self.name
Terminal
python manege.py makegirations python manage.py migrate
app01/tests.py
""" 当你只是想测试django中的某一个py文件内容 那么你可以不用书写前后端交互的形式 而是直接写一个测试脚本即可 脚本代码无论是写在应用下的tests.py还是自己单独开设py文件都可以 """ # 测试环境的准备 去manage.py中拷贝前四行代码 然后自己写两行 import os if __name__ == "__main__": os.environ.setdefault("DJANGO_SETTINGS_MODULE", "orm1.settings") import django django.setup() # 在这个代码块的下面就可以测试django里面的单个py文件了 # 所有的代码都必须等待环境准备完毕之后书写 from app01 import models # 神奇的双下划线查询 # 1.年龄大于35岁的数据 res = models.User.objects.filter(age__gt=35) print(res) # 2.年龄小于35岁的数据 res = models.User.objects.filter(age__lt=35) print(res) # 3.年龄大于等于28岁的数据 res = models.User.objects.filter(age__gte=28) print(res) # 年龄小于等于20岁的数据 res = models.User.objects.filter(age__lte=20) print(res) # 4.年龄是18或20或28 res = models.User.objects.filter(age__in=[18,20,28]) print(res) # 5.年龄在18到28岁之间的数据 res = models.User.objects.filter(age__range=[18,28]) print(res) # 6. 查询名字里面含有s的数据 模糊查询(默认区分大小写) res = models.User.objects.filter(name__contains='s') print(res) # 忽略大小写 res = models.User.objects.filter(name__icontains='s') print(res) # 7.查询名字以s开头的数据 res = models.User.objects.filter(name__startswith='s') print(res) # 查询名字以k结束的数据 res = models.User.objects.filter(name__endswith='k') print(res) # 8.查询出注册时间是2020年12月的数据 res = models.User.objects.filter(register_time__month='12') print(res) # 查询出注册时间是2002年的数据 res = models.User.objects.filter(register_time__year='2002') print(res)