您的位置:首页 > 编程语言 > Python开发

python3开发进阶-Django框架中的ORM的常用操作的补充(F查询和Q查询,事务)

2018-06-22 22:32 1136 查看
阅读目录

F查询和Q查询

事务

一、F查询和Q查询

1、F查询

查询前的准备

INSERT INTO app01_product (id, name, price, inventory, sale) VALUES (1, '跟大娃变大', 239, 1000, 10);
INSERT INTO app01_product (id, name, price, inventory, sale) VALUES (2, '跟二娃学吹牛逼', 20150, 60, 60);
INSERT INTO app01_product (id, name, price, inventory, sale) VALUES (3, '跟三娃学喊麦', 50150, 100, 0);
INSERT INTO app01_product (id, name, price, inventory, sale) VALUES (4, '跟四娃学诗歌', 159, 50, 10000);
INSERT INTO app01_product (id, name, price, inventory, sale) VALUES (5, '跟五娃学树新风', 155, 100, 200);
INSERT INTO app01_product (id, name, price, inventory, sale) VALUES (6, '跟六娃学喷口水', 152, 200, 1);


SQL数据main_app01_product

import os

if __name__ == '__main__':
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "BMS.settings")
import django
django.setup()

import datetime
from app01 import models

try:
     from django.db.models import F 
from django.db import transaction
#买一本书
#在数据库层面要做到的事儿
#1、创建一条订单数据
#2、去产品表 将卖出数+1,库存数-1
with transaction.atomic():  #开启事务处理
#创建一条订单数据
       models.Order.objects.create(num='123456789',product_id=1,count=1)
#去产品表 将卖出数+1,库存数-1(报错)
       models.Product.objects.get(id=1).update(inventory=F('inventory')-1,sale=F('sale')+1) 
#能执行成功
#models.Product.objects.filter(id=1).update(inventory=F('inventory'-1,sale=F('sale')+1))
except Exception as e:
     print(e)  

# 不开启事务
# try:
#     # 创建一条订单数据
#     models.Order.objects.create(num="123456789", product_id=1, count=1)
#     # 去产品表 将卖出数+1, 库存数-1
#     models.Product.objects.get(id=1).update(kucun=F("kucun") - 1, maichu=F("maichu") + 1)
# except Exception as e:
#     print(e)


内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: