django 经验教训

pip install python-multipart

# filter单列、查询单列,正常values_list给出的结果是个列表,里边里边的每条数据对应一个元组,
当只查询一列时,可以使用flat标签去掉元组,将每条数据的结果以字符串的形式存储在列表中,
从而避免解析元组的麻烦
User.objects.values_list('username', flat=True)

正确
方法:
from datetime import datetime
错误方法:
import datetime

 


 

事务处理

    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", product_id=1, count=1)
                能执行成功
                models.Book.objects.filter(id=1).update(kucun=F("kucun") - 1, maichu=F("maichu") + 1)
        except Exception as e:
            print(e)
            transaction.rollback()  # 回滚
            transaction.commit()  # 提交
            
    from django.db import transaction
    # 方式1:装饰器
    @transaction.atomic
    # 方式2:with上下文
    with transaction.atomic():
    transaction.rollback()
    transaction.commit()        

  


# todo 清理过期权限数据

Usertolock.objects.filter(expired_time__lt=datetime.now()).delete()

常用错误提示及原因

1、如下提示实际上是:数据库没连接成功

	
OSError: [WinError 123] 文件名、目录名或卷标语法不正确。: '<frozen importlib._bootstrap>'

 

2、声明app

     A、在setting.py中apps中声明

     B、app名字目录下 apps.py文件中声明

from django.apps import AppConfig
 
class ApiConfig(AppConfig):
    default_auto_field = 'django.db.models.BigAutoField'
    name = 'api'

  

3、有时pip install不成功时,可以要使用pip3 install

pip install django-rest-swagger      不成功
pip3 install django-rest-swagger     成功

  

Token错误代码的捕捉

 

Python set集合做交集、并集、差集运算

集合最常做的操作就是进行交集、并集、差集以及对称差集运算,首先有必要给大家普及一下各个运算的含义。



图 1 集合示意图

 

 


图 1 中,有 2 个集合,分别为 set1={1,2,3} 和 set2={3,4,5},它们既有相同的元素,也有不同的元素。以这两个集合为例,分别做不同运算的结果如表 1 所示。

表 1 Python set集合运算
运算操作Python运算符含义例子
交集 & 取两集合公共的元素 >>> set1 & set2
{3}
并集 | 取两集合全部的元素 >>> set1 | set2
{1,2,3,4,5}
差集 - 取一个集合中另一集合没有的元素 >>> set1 - set2
{1,2}
>>> set2 - set1
{4,5}
对称差集 ^ 取集合 A 和 B 中不属于 A&B 的元素 >>> set1 ^ set2
{1,2,4,5}
posted @ 2022-08-03 19:54  pearlcity  阅读(41)  评论(0)    收藏  举报