柚子快报激活码778899分享:前端 Django——数据库

http://yzkb.51969.com/

Django——数据库

class Book(models.Model):

book_name = models.CharField(max_length=20)

price = models.DecimalField(max_digits=5 , decimal_places=2)

inventory = models.IntegerField()

# auto_now_add 设置为 True , 在创建数据的时候设置当前时间 ,后续对应的字段修改数据 ,该时间不会变化

create_time = models.DateField(auto_now_add=True)

# auto_now 设置为 True , 在创建数据的时候设置当前时间 ,

# 后续对应的字段修改数据 ,该时间也会跟着跟新为修改后的时间

update_time = models.DateField(auto_now=True)

# DateField 设置了 auto_now_add 和 auto_now 属性之后 ,在新增数据的时候可以不手动添加

class Meta:

db_table = 'book'

Book.objects.create(book_name='白夜行' , price=98.95 , inventory=520)

Book.objects.create(book_name='挪威的森林' , price=80.6 , inventory=510)

Book.objects.create(book_name='解忧杂货店' , price=53.25 , inventory=623)

Book.objects.create(book_name='三体' , price=120.5 , inventory=630)

Book.objects.create(book_name='平凡的世界' , price=100.66 , inventory=100)

Book.objects.create(book_name='人生的枷锁' , price=75.98 , inventory=50)

Book.objects.create(book_name='追风筝的人' , price=46.33 , inventory=751)

Book.objects.create(book_name='月亮与六便士' , price=75.98 , inventory=60)

Book.objects.create(book_name='三国演义' , price=88.65 , inventory=751)

Book.objects.create(book_name='摆渡人' , price=30.12 , inventory=630)

# 查询数据

# 使用 all 查询表格中的所有数据

# values() 将数据以字典对象的方式显示

# values_list() 将数据以元组对象的方式显示

get_data = Book.objects.all().values_list()

# print(get_data)

get_data = Book.objects.filter(book_name='三体')

# print(get_data.values_list())

# get方法 , 获取单条数据 , 给定的条件也只能在数据表中是唯一的

# 如果不唯一 , 则抛出异常

get_data = Book.objects.get(id='6')

print(get_data)

print(get_data.book_name)

# 排序: order_by , 默认情况是升序排序

data = Book.objects.order_by('price')

for d in data:

print(d.book_name , d.price)

print('*'*20)

# 降序排序 , 在指定的属性名前面加上 '-'

data = Book.objects.order_by('-price')

for d in data:

print(d.book_name, d.price)

print('*' * 20)

# reverse ,排序翻转,将升序变成降序 , 降序变为升序

data = Book.objects.order_by('price').reverse()

for d in data:

print(d.book_name, d.price)

# 大小比较

# 大于 : gt

data = Book.objects.filter(price__gt=80)

# print(data)

# 大于等于 :gte

data = Book.objects.filter(price__gte=75.98)

# print(data)

# 小于 : lt

data = Book.objects.filter(price__lt=75.98)

print(data)

# 小于等于 :lte

data = Book.objects.filter(price__lte=75.98)

print(data)

# between 100 and 500

# 取区间:range(100 , 500)

data = Book.objects.filter(inventory__range=(100 , 520))

print(data)

# like %:匹配0到多个字符 _:匹配一个字符(一个下划线匹配一个字符)

# startswith 匹配以什么字符开头

data = Book.objects.filter(book_name__startswith='追') # like '追%'

print(data)

# endswith 匹配以什么字符结尾

data = Book.objects.filter(book_name__endswith='人') # like '%人'

print(data)

# 修改数据

# 先获取到数据对象 , 再通过对象进行修改

data = Book.objects.get(id=2)

# 使用对象.属性名进行重新赋值的操作

data.price= 75.23

# data.save()

# update() 方法修改 , 这个方法可以一次性修改多条数据

data = Book.objects.filter(id=5)

# data.update(inventory=300)

data = Book.objects.filter(id__in=[3 , 8 , 9])

data.update(inventory=300)

# count 获取到查询的数据对象个数

# 直接查询整个表中有多少条数据

data = Book.objects.count()

print(data)

data = Book.objects.filter(price__gt=80).count()

print(data)

# 对查询得到的数据对象查询集进行切片

data = Book.objects.all()

print(data)

print(data[0:4])

data = Book.objects.filter(id__range=(0 , 4))

print(data)

print(data[2])

# 且或非

# 且 &

data = Book.objects.filter(price__gt=75 , inventory__gte=300)

# print(data)

# & 这个方式需要查询两个对象进行连接

data = Book.objects.filter(price__gt=75) & Book.objects.filter(inventory__gte=300)

# print(data)

# 或 |

data = Book.objects.filter(price__lt=75) | Book.objects.filter(inventory__gte=300)

print(data)

# Q 对象 是进行且或非的运算操作

from django.db.models import Q

# Q(条件)

data = Book.objects.filter(Q(price__gt=75) & Q(inventory__gte=300))

# print(data)

data = Book.objects.filter(Q(price__lt=75) | Q(inventory__gte=300))

# print(data)

# 非 ~

data = Book.objects.filter(~Q(price__lt=75))

print(data)

# F 表达式 ,直接在数据库中完成修改操作 , 不会将数据对象从数据库中读取到 Python 的内存中

from django.db.models import F

data = Book.objects.get(id=10)

data.inventory = F('inventory') + 520

data.save()

# 聚合函数

# 要使用聚合函数查询的时候需要和 aggregate 方法使用

from django.db.models import Max , Min , Sum , Avg

# 集合函数查询返回的结果是一个字典

# 字典的键是默认为: 字段名__聚合函数名

data = Book.objects.aggregate(Max('price'))

print(data)

data = Book.objects.filter(id__in=[1 , 5 , 7]).aggregate(Avg('price'))

print(data)

# 自定义集合函数查询结果的键名

data = Book.objects.filter(id__in=[1, 5, 7]).aggregate(price = Avg('price'))

print(data)

# 删除数据 delete 方法

# 先获取到要删除的数据对象 , 然后再使用 delete 方法

data = Book.objects.get(id=4).delete()

print(data)

data = Book.objects.all().delete()

print(data)

柚子快报激活码778899分享:前端 Django——数据库

http://yzkb.51969.com/

好文链接

评论可见,请评论后查看内容,谢谢!!!评论后请刷新页面。