神奇的双下划线查询
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.py |
DATABASES = {
'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)