Q查询
"""Q查询"""
# filter括号内多个条件均为and关系
# 1.查询主键为3或者卖出数为1000的数据
# res = models.Book.objects.filter(pk=3, maichu=1000) # 逗号分隔为and关系
from django.db.models import Q
###########基本用法###########
# res = models.Book.objects.filter(Q(pk=3), Q(maichu=1000)) # 逗号分隔为and关系
# res = models.Book.objects.filter(Q(pk=3) | Q(maichu=1000)) # |分隔为or关系
# res = models.Book.objects.filter(~Q(pk=3) | Q(maichu=1000)) # ~分隔为not关系
# print(res)
###########进阶用法###########
# filter(title='123') filter('title'='123')
q = Q() # 默认多个条件之间也是and关系
q.connector = 'or' # 也可以修改链接关系
# q.children.append(('title', '三国演义爆款'))
q.children.append(('title__contains', '爆'))
q.children.append(('price', 1123))
res = models.Book.objects.filter(q)
print(res)
orm事务操作
"""
事务:ACID
A原子性
C一致性
I独立性
D持久性
start transaction
...
rollback
commit
"""
from django.db import transaction
# 事务
# 买一本 跟jason学Linux 书
# 在数据库层面要做的事儿
# 1. 创建一条订单数据
# 2. 去产品表 将卖出数+1, 库存数-1
from django.db.models import F
# 开启事务处理
try:
with transaction.atomic():
# 创建一条订单数据
models.Book.objects.create(num="110110111