1.新增(类似数据库操作的insert)
# 新增 #方式一: models.Category.objects.create(name='MySQL') #方式二: c = models.Category(name='Oracle') c.save() models.Article.objects.create( title='orm学习', content='orm学习, content', category_id=2 ) # 知道外键,id category = models.Category.objects.get(id=3) models.Article.objects.create( title='orm学习2', content='orm学习2, content', category=category # category_id=category.id # category=category 这两行是等价的 ) # 不知道外键,id
2.修改(类似数据库操作的update)
# 修改 c = models.Category.objects.get(id=3) c.name = 'JAVA' c.save() # 修改单条数据 models.Category.objects.all().update(name='abc') # 修改全表的某个字段 # 按照某个条件修改 models.Category.objects.filter(name='abc').update(name='ccc', age=15)
3.删除(类似数据库操作的delete)
# 删除 c = models.Category.objects.get(id=6) c.delete() # 删除某一条 models.Category.objects.all().delete() # 删除全表数据 # 按照某些条件删除 models.Category.objects.filter(name='abc').delete()
4.查询(类似数据库操作的select)
# 简单查询 result = models.Category.objects.all() # 查询所有的数据 print(result) print(result.values()) print(result.values_list()) print(result.values('name')) # 根据某个字段的值过滤结果集 print(result.values_list('name')) # 根据某个字段的值过滤结果集 print(result.first()) # 获取结果集的第一个元素 print(result.count()) # 获取结果集中结果个数 result = models.Category.objects.get(id=1) # 获取单条结果 print(result) # 复杂查询 # 大于、小于、大于等于、小于等于、in 、not 、或 result = models.Article.objects.filter(read_count__gt=0) # 大于0 print(result) result = models.Article.objects.filter(read_count__gte=0) # 大于等于0 print(result) result = models.Article.objects.filter(read_count__lt=0) # 小于0 print(result) result = models.Article.objects.filter(read_count__lte=0) # 小于等于0 print(result) result = models.Article.objects.exclude(read_count=0) # 不等于 not print(result) result = models.Article.objects.filter(id__in=[1, 2, 3]) # in print(result) # 模糊查询 result = models.Article.objects.filter(title__contains='orm') # like,包含某个字符串 print(result) result = models.Article.objects.filter(title__icontains='orm') # like,忽略大小写包含某个字符串 print(result) result = models.Article.objects.filter(title__endswith='xxx') # 以什么结尾 # 如果用get取单独1条数据时有报错风险,建议使用下面的代码,更健壮 query_set = models.Article.objects.filter(id=5) if query_set: article = query_set.first() else: print('这条数据不存在') # 多条件查询 or and # where read_count >0 or title like '%orm%' result = models.Article.objects.filter(Q(read_count__gt=0) | Q(title__contains='orm')) print(result) # where read_count >0 and title like '%orm%' result = models.Article.objects.filter(Q(read_count__gt=0) & Q(title__contains='orm')) print(result) result = models.Article.objects.filter(read_count=0,title='python06篇') print(result) # where read_count >0 and title not like '%orm%' result = models.Article.objects.filter(Q(read_count=0) & ~Q(title__contains='orm')) # ~放在Q()前代表Q的非 print(result)
查询结果
<QuerySet [<Category: python>, <Category: Linux>, <Category: JAVA>, <Category: apche>, <Category: MySQL>]> <QuerySet [{'id': 1, 'create_time': datetime.datetime(2020, 11, 18, 23, 5, 22, 413832), 'update_time': datetime.datetime(2020, 11, 18, 23, 5, 22, 413832), 'name': 'python'}, {'id': 2, 'create_time': datetime.datetime(2020, 11, 18, 23, 6, 14, 86852), 'update_time': datetime.datetime(2020, 11, 18, 23, 6, 14, 86852), 'name': 'Linux'}, {'id': 3, 'create_time': datetime.datetime(2020, 11, 18, 23, 6, 21, 743606), 'update_time': datetime.datetime(2020, 11, 29, 15, 12, 4, 149925), 'name': 'JAVA'}, {'id': 4, 'create_time': datetime.datetime(2020, 11, 18, 23, 33, 40, 410426), 'update_time': datetime.datetime(2020, 11, 18, 23, 33, 40, 410426), 'name': 'apche'}, {'id': 5, 'create_time': datetime.datetime(2020, 11, 29, 14, 59, 9, 537770), 'update_time': datetime.datetime(2020, 11, 29, 14, 59, 9, 537770), 'name': 'MySQL'}]> <QuerySet [(1, datetime.datetime(2020, 11, 18, 23, 5, 22, 413832), datetime.datetime(2020, 11, 18, 23, 5, 22, 413832), 'python'), (2, datetime.datetime(2020, 11, 18, 23, 6, 14, 86852), datetime.datetime(2020, 11, 18, 23, 6, 14, 86852), 'Linux'), (3, datetime.datetime(2020, 11, 18, 23, 6, 21, 743606), datetime.datetime(2020, 11, 29, 15, 12, 4, 149925), 'JAVA'), (4, datetime.datetime(2020, 11, 18, 23, 33, 40, 410426), datetime.datetime(2020, 11, 18, 23, 33, 40, 410426), 'apche'), (5, datetime.datetime(2020, 11, 29, 14, 59, 9, 537770), datetime.datetime(2020, 11, 29, 14, 59, 9, 537770), 'MySQL')]> <QuerySet [{'name': 'python'}, {'name': 'Linux'}, {'name': 'JAVA'}, {'name': 'apche'}, {'name': 'MySQL'}]> <QuerySet [('python',), ('Linux',), ('JAVA',), ('apche',), ('MySQL',)]> python 5 python <QuerySet [<Article: orm学习2>, <Article: python基础篇03>, <Article: python基础篇01>]> <QuerySet [<Article: orm学习2>, <Article: orm学习>, <Article: python08篇>, <Article: python07篇>, <Article: python06篇>, <Article: python05篇>, <Article: python04篇>, <Article: python基础篇03>, <Article: python基础篇02>, <Article: python基础篇01>]> <QuerySet []> <QuerySet [<Article: orm学习>, <Article: python08篇>, <Article: python07篇>, <Article: python06篇>, <Article: python05篇>, <Article: python04篇>, <Article: python基础篇02>]> <QuerySet [<Article: orm学习2>, <Article: python基础篇03>, <Article: python基础篇01>]> <QuerySet [<Article: python基础篇03>, <Article: python基础篇02>, <Article: python基础篇01>]> <QuerySet [<Article: orm学习2>, <Article: orm学习>]> <QuerySet [<Article: orm学习2>, <Article: orm学习>]> <QuerySet [<Article: orm学习2>, <Article: orm学习>, <Article: python基础篇03>, <Article: python基础篇01>]> <QuerySet [<Article: orm学习2>]> <QuerySet [<Article: python06篇>]> <QuerySet [<Article: python08篇>, <Article: python07篇>, <Article: python06篇>, <Article: python05篇>, <Article: python04篇>, <Article: python基础篇02>]>