-----------------------> Django 的学习之路,一路写,一路记
使用orm创建一张表,在models.py文件中加入建表类:
from django.db import models
from django.utils import timezone
class AllStatus(models.Model):
name = models.CharField(max_length=20)
status = models.IntegerField()
enddate = models.DateTimeField(default=timezone.now())
startdate = models.DateTimeField(default=timezone.now())
class Meta:
db_table = 'all_status'
通过命令行创建表到数据库:
python manage.py migrate # 创建django管理表结构
python manage.py makemigrations working # 让 Django 知道我们在我们的模型有一些变更
python manage.py migrate working # 创建自建表结构
新建文件 dbopreation.py:
增:
from .models import AllStatus
from django.utils import timezone
def InsertAllStatus():
try:
for name in ["张三","李四","王五"]:
insert = AllStatus(
name=name,
status=0,
startdate=timezone.now(),
enddate=timezone.now()
)
insert.save()
return True
except Exception as e:
print(e)
return False
增,批量插入数据:
from .models import AllStatus
from django.utils import timezone
def InsertAllStatus():
try:
querysetlist = []
for name in ["张三","李四","王五"]:
querysetlist.append(AllStatus(
name=name,
status=0,
startdate=timezone.now(),
enddate=timezone.now()
))
AllStatus.objects.bulk_create(querysetlist)
return True
except Exception as e:
print(e)
return False
----------------------------------------------
删、改、查数据:
from .models import AllStatus
from django.utils import timezone
# 删除表中所有数据
AllStatus.objects.all().delete()
# 删除表中符合条件数据
AllStatus.objects.filter(name="张三").delete()
# 修改张三的status值为1
AllStatus.objects.filter(name="张三").update(status=1)
# 更新name为张三,status为1的 enddate 时间为当前时间
AllStatus.objects.filter(name="张三",status=1).update(enddate=timezone.now())
# 或者
updatedate = AllStatus.objects.filter(name="张三",status=1).first()
updatedate.enddate = timezone.now()
updatedate.save()
# 查询所有数据
AllStatus.objects.all()
# 查询符合筛选条件的对象
AllStatus.objects.filter(name="张三")
# 查询符合筛选条件的对象,但返回值只能有一个,超过一个则报错
AllStatus.objects.get(name="李四")
# 返回 筛选条件不符合的数据(反选)
# 如果有多个参数,参数之间为且的关系
AllStatus.objects.exclude(name="张三")
# 对结果进行排序
AllStatus.objects.order_by("startdate","enddate")
# 对结果进行排序
AllStatus.objects.order_by("enddate").reverse()
# 统计
AllStatus.objects.filter(status=0).count()
# 返回第一条或最后一条数据
AllStatus.objects.first()
AllStatus.objects.last()
# 判断查询数据是否为空,有数据返回True,空则返回False
AllStatus.objects.filter(name="唐三藏").exists()
# 返回一个QuerySet,列表中每条数据为一个字典
AllStatus.objects.values()
# 返回一个QuerySet,列表中每条数据为一个元组
AllStatus.objects.values_list()
# 对结果去重
AllStatus.objects.filter(status=0).values("status").distinct()