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 所示。
| 运算操作 | 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} |


浙公网安备 33010602011771号