# defer和only(查询优化相关)
# only保持是book对象,但是只能使用only指定的字段
# books = models.Book.objects.all().only('name') # print(books[0].name) # print(books[0].price) # 能出来, # books = models.Book.objects.all().only('name') # # print(books[0].__dict__) books = models.Book.objects.all().defer('name','price') print(books[0].__dict__)
# 事物:ACID,事物的隔离级别(搜),锁, 行级锁,表级锁
# djanog orm中使用事物:原子性操作,要么都成功,要么都失败
# 新增一个作者详情,新增一个作者
# 事物的三个粒度
# 1 局部使用
from django.db import transaction with transaction.atomic(): # 都在事物中,要么都成功,要么都失败 author_detail=models.AuthorDetail.objects.create(addr='xxx',phone='123',sex=1) # raise Exception('抛了异常') author=models.Author.objects.create(name='llqz',age=19,author_detail=author_detail)
# 2 视图函数装饰器,这一个视图函数都在一个事物中
# @transaction.atomic # def index(request): # return HttpResponse('ok') # 3 整个http请求,在事物中,在setting.py中配置 ''' DATABASES = { 'default': { ... 'PORT': 3306, 'ATOMIC_REQUEST': True, } } 'ATOMIC_REQUEST': True, 设置为True统一个http请求对应的所有sql都放在一个事务中执行(要么所有都成功,要么所有都失败)。 '''
标签:defer,name,objects,models,要么,only,books,装饰 From: https://www.cnblogs.com/97zs/p/17868015.html