初学Django:第十一天,shell工具的使用

一、通过命令:python manage.py shell  来使用shell工具

向数据库插入测试数据:

insert into bookinfo(name, pub_date, readcount,commentcount, is_delete) values
('射雕英雄传', '1980-5-1', 12, 34, 0),
('天龙八部', '1986-7-24', 36, 40, 0),
('笑傲江湖', '1995-12-24', 20, 80, 0),
('雪山飞狐', '1987-11-11', 58, 24, 0);
insert into peopleinfo(name, gender, book_id, description, is_delete)  values
    ('郭靖', 1, 1, '降龙十八掌', 0),
    ('黄蓉', 0, 1, '打狗棍法', 0),
    ('黄药师', 1, 1, '弹指神通', 0),
    ('欧阳锋', 1, 1, '蛤蟆功', 0),
    ('梅超风', 0, 1, '九阴白骨爪', 0),
    ('乔峰', 1, 2, '降龙十八掌', 0),
    ('段誉', 1, 2, '六脉神剑', 0),
    ('虚竹', 1, 2, '天山六阳掌', 0),
    ('王语嫣', 0, 2, '神仙姐姐', 0),
    ('令狐冲', 1, 3, '独孤九剑', 0),
    ('任盈盈', 0, 3, '弹琴', 0),
    ('岳不群', 1, 3, '华山剑法', 0),
    ('东方不败', 0, 3, '葵花宝典', 0),
    ('胡斐', 1, 4, '胡家刀法', 0),
    ('苗若兰', 0, 4, '黄衣', 0),
    ('程灵素', 0, 4, '医术', 0),
    ('袁紫衣', 0, 4, '六合拳', 0);

1.新增数据:

1.指定添加哪个表(模型类)    2.添加数据,3.保存  (save())

objects   =   Manager()    管理器对象    是模型类和数据库进行查询的接口(url)

from books.models import BookInfo,PeopleInfo
>>> book = BookInfo(name='python',pub_date='2021-12-11')
>>> book.save()
>>> BookInfo.objects.create(name='hello',pub_date='2021-12-11')
<BookInfo: hello>

2.修改 数据 

1.查询一下数据是否存在,2.使用修改的方法  3.保存```

book = BookInfo.objects.get(name='hello')
>>> book
<BookInfo: hello>
>>> book.name = 'java'
>>> book.save()
# update() 修改数据的方法     .filter()   过滤的条件  和  where()

BookInfo.objects.filter(name='java').update(name='world')

3.删除  


1.delete()

book = BookInfo.objects.get(name='world')
>>> book.delete()
(1, {'books.BookInfo': 1})
2.
BookInfo.objects.filter(name='python').delete()
(1, {'books.BookInfo': 1})

4.查询

```
# 基本的查询
get(pub_date)   查询单个数据  如果没有这个数据  模型类的异常
all()    查询多个数据 返回的是个列表
get,all  返回的数据都是数据的对象
count()
BookInfo.objects.count()


过滤查询   :  实现的就是SQL语句中的where功能  包括:

filter()  过滤 出多个结果
get()  过滤出单个数据

```

```python
过滤条件的表达语法:()
属性名称__比较运算符 = 值

4.1.查询图片编号为1的
 

BookInfo.objects.get(id=1)
<BookInfo: 射雕英雄传>
>>> BookInfo.objects.get(id__exact=1)
<BookInfo: 射雕英雄传>


4.2.查询图书中包含‘传’的图书 # 模糊查询    %  contains  是否包含

BookInfo.objects.filter(name__contains='传')
<QuerySet [<BookInfo: 射雕英雄传>]>
>>> BookInfo.objects.get(name__contains='传')
<BookInfo: 射雕英雄传>
>>> BookInfo.objects.filter(name__startswith='天')
<QuerySet [<BookInfo: 天龙八部>]>
>>> BookInfo.objects.filter(name__endswith='部')
<QuerySet [<BookInfo: 天龙八部>]>

4.3.查询书名是否为空

BookInfo.objects.filter(name__isnull=True)
<QuerySet []>

4.4. 查询编号为1,或者3或者5 ,in  :  是否包含在范围内

BookInfo.objects.filter(id__in=[1,3,5])
<QuerySet [<BookInfo: 射雕英雄传>, <BookInfo: 笑傲江湖>]>


4.5.比较查询

 
gt  大于       (greater then)
gte  大于等于
lt  下于
lte  小于等于

查询编号大于3的图书

 BookInfo.objects.filter(id__gt=3)
<QuerySet [<BookInfo: 雪山飞狐>]>


查询日期大于3的图书  

BookInfo.objects.filter(pub_date__gt='1980-05-01')
<QuerySet [<BookInfo: 天龙八部>, <BookInfo: 笑傲江湖>, <BookInfo: 雪山飞狐>]>

4.6.日期查询  year   month   
 

BookInfo.objects.filter(pub_date__year='1980')

注意日期:格式YYYY-MM-DD


```

4.7 F和Q对象(函数)

F 对象    2个对象进行比较

语法:

```
filter(字段名__运算符=F('字段名'))
```

1.查询阅读量大于评论量的图书

```

BookInfo.objects.filter(readcount__gt=F('commentcount'))
<QuerySet [<BookInfo: 雪山飞狐>]>


2.查询阅读量大于2 评论量的图书
 

BookInfo.objects.filter(readcount__gt=F('commentcount')*2)
<QuerySet [<BookInfo: 雪山飞狐>]>


```

Q对象:

和sql中的where  部分中的and  一样的

```
1.查询阅读量 大于20 并且 编号小于3的图书

BookInfo.objects.filter(readcount__gt=20,id__lt=3)
<QuerySet [<BookInfo: 天龙八部>]>

2.查询阅读量大于20 或者 小于3的ID

BookInfo.objects.filter(Q(readcount__gt=20)| Q(id__lt=3))
<QuerySet [<BookInfo: 射雕英雄传>, <BookInfo: 天龙八部>, <BookInfo: 雪山飞狐>]>


3.查询不等于3的图书
 

BookInfo.objects.exclude(id=3)  
<QuerySet [<BookInfo: 射雕英雄传>, <BookInfo: 天龙八部>, <BookInfo: 雪山飞狐>]>
>>> BookInfo.objects.filter(~Q(id=3))
<QuerySet [<BookInfo: 射雕英雄传>, <BookInfo: 天龙八部>, <BookInfo: 雪山飞狐>]>

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值
>