一、通过命令: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: 雪山飞狐>]>

初学Django:第十一天,shell工具的使用相关推荐

  1. Django 开发实战2-3 模型-shell工具

    Python 开发实战-shell工具 01 shell 工具 02 查看MySQL 数据库的日志 03 ubuntu退出shell终端命令_ubuntu 终端常用命令 01 shell 工具    ...

  2. 基于.htaccess的Web Shell工具htshells

    基于.htaccess的Web Shell工具htshells .htaccess文件是Apache服务器的配置文件.它负责相关目录下的网页配置.一旦用户获得修改该文件的权限,就可以基于该文件构建Sh ...

  3. grub shell 错误_grub命令_Linux grub 命令用法详解:多重引导程序grub的命令行shell工具...

    grub命令是多重引导程序grub的命令行shell工具. 语法grub(选项) 选项--batch:打开批处理模式: --boot-drive=:指定stage2的引导驱动器: --config-f ...

  4. 新课推荐 | 用 Django 快速搭建 API 测试工具

    API,即:应用编程接口(Application Programming Interface),就是软件系统不同组成部分衔接的约定. 由于近年来软件的规模日益庞大,常常需要把复杂的系统划分成小的组成部 ...

  5. adb shell读取返回值_shell学习笔记03(函数amp;shell工具amp;面试题)

    自定义函数 1.基本语法 [ function ] funname[()] {Action;[return int;] } funname 2.经验技巧 (1)必须在调用函数地方之前,先声明函数,sh ...

  6. Linux Shell脚本入门教程系列之(十一)Shell while循环

    本文是Linux Shell脚本系列教程的第(十一)篇,更多Linux Shell教程请看:Linux Shell脚本系列教程 在上一篇Linux Shell系列教程之(十)Shell for循环中, ...

  7. java 交互式 shell_Java9 Shell工具(JShell)

    Java Shell工具(JShell) 它是一个交互式Java Shell工具,它使我们能够从Shell中执行Java代码并立即显示输出. JShell是一个REPL(读取评估打印循环)工具,可从命 ...

  8. Shell工具 cut sed awk sort

    Shell工具(重点) cut cut的工作就是"剪",具体的说就是在文件中负责剪切数据用的.cut 命令从文件的每一行剪切字节.字符和字段并将这些字节.字符和字段输出. 1.基本 ...

  9. 【Linux操作系统】--攥写一个简易的shell工具

    目录 做一个简易的shell 第一步:打印提示符,在同一行打印出提示符 第二步:获取标准输入,获取命令字符串 第三步:将字符串分割,解析字符串 第四步:替换进程,执行第三方命令 3.5.执行第三方命令 ...

最新文章

  1. android webview开启html5支持
  2. Jquery创建JSON对象
  3. Linux macos 常用终端操作
  4. 不要再纠结卷积的公式啦!0公式深度解析全连接前馈网络与卷积神经网络!
  5. Python数模笔记-StatsModels 统计回归(1)简介
  6. Kindle 助手上线啦
  7. test luasql's postgresql driver performance (not better than pgbench)
  8. 【matlab】:matlab中不断的出现计算过程怎么办
  9. 深刻剖析快速排序为什么不稳定?
  10. Pdp11 simh 虚拟机 运行 unix V6
  11. 【CPU毫秒级】网易易盾点选识别
  12. 开发笔记--项目部署到linux服务器
  13. 一文看懂计算机视觉!7个专业术语别说你不知道!
  14. Hystrix学习(2)雪崩效应
  15. 网易2018校园招聘:射击游戏 [python]
  16. java中socket实现一对一聊天
  17. golang中通知协程退出的方式
  18. jmeter循环和计数器
  19. [APIO2017]斑斓之地——可持久化线段树
  20. 程序员到35岁真的会失业吗

热门文章

  1. html标准模式,html如何使标准模式工作和怪癖模式?_firefox_开发99编程知识库
  2. java runtime异常_JAVA RuntimeException 问题
  3. python框架Django中MTV框架之VIew(业务控制器)
  4. 2022年全球及中国公共场所用和商用生活用纸行业头部企业市场占有率及排名调研报告
  5. 使用U盘重装电脑操作系统
  6. android surface原理,Android 谈谈我理解的Surface绘制原理
  7. STM32-OLED小数显示函数
  8. 文本相似度检测的流程以及文本相似度的数学度量方法
  9. 革命性Unity 编辑器扩展工具 --- Odin Inspector 系列教程
  10. 使用xmpp库loudmouth连接google talk服务器