Django的配置文件时settings.py中的
TEMPLATES = [
{
'BACKEND': 'django.template.backends.django.DjangoTemplates',
'DIRS': [os.path.join(BASE_DIR, 'templates')], 只修改这一个
'APP_DIRS': True,
'OPTIONS': {
'context_processors': [
'django.template.context_processors.debug',
'django.template.context_processors.request',
'django.contrib.auth.context_processors.auth',
'django.contrib.messages.context_processors.messages',
],
},
},
] 对数据库进行增 删 改 查
在当前的文档的views.py中的
class RegisterView(View):
def get(self, request):
1 增加
book = BookInfo(
btitle='天涯明月刀',
bpub_date=date(1999, 12, 12),
bread=30,
bcomment=10
)
book.save() HeroInfo.objects.create(
hname='叶开',
hgender=0,
hcomment='小李飞刀',
hbook=book
)
2 查询
try:
基本查询
查询所有的书名
books = BookInfo.objects.all()
print(books)
book = BookInfo.objects.get(id=1)
book = BookInfo.objects.get(pk=1)
book = BookInfo.objects.get(id=100)
print(book)
print(BookInfo.objects.count()) 过滤查询
相等
print(BookInfo.objects.filter(id__exact=1))
print(BookInfo.objects.filter(id=1)) 模糊查询
print(BookInfo.objects.filter(btitle__contains='刀'))
print(BookInfo.objects.filter(btitle__endswith='刀'))
print(BookInfo.objects.filter(btitle__startswith='天'))
以上运算符都区分大小写,在这些运算符前加上i表示不区分大小写,如iexact、icontains、istartswith、iendswith. 空查询
print(BookInfo.objects.filter(btitle__isnull=False))
print(HeroInfo.objects.filter(hcomment__isnull=False)) 范围查询
print(BookInfo.objects.filter(id__in=[1, 3, 5]))
print(HeroInfo.objects.filter(id__in=[1, 3, 5, 7, 9, 11, 13, 15, 17, 19])) 比较查询
print(BookInfo.objects.filter(id__gt=3))
print(BookInfo.objects.exclude(id__gt=3)) 日期查询
print(BookInfo.objects.filter(bpub_date__year=1980))
print(BookInfo.objects.filter(bpub_date__gt=date(1990, 1, 1))) F 对象 之前的查询都是对象的属性与常量值比较,两个属性怎么比较呢? 答:使用F对象,被定义在django.db.models中。
查询阅读量大于等于评论量的图书。
print(BookInfo.objects.filter(bread__gte=F('bcomment')))
查询阅读量大于等于评论量2倍的图书。
print(BookInfo.objects.filter(bread__gte=F('bcomment')*2)) Q 对象
多个过滤器逐个调用表示逻辑与关系,同sql语句中where部分的and关键字。
print(BookInfo.objects.filter(bread__gt=20,id__lt=3))
print(BookInfo.objects.filter(bread__gt=20).filter(id__lt=3))
如果需要实现逻辑或or的查询,需要使用Q()对象结合|运算符,Q对象被义在django.db.models中。
查询阅读量大于20的图书,改写为Q对象如下。
print(BookInfo.objects.filter(Q(bread__gt=20)))
Q对象可以使用&、|连接,&表示逻辑与,|表示逻辑或。查询阅读量大于20,或编号小于3的图书,只能使用Q对象实现
print(BookInfo.objects.filter(Q(bread__gt=20) | Q(pk__lt=3)))
Q对象前可以使用~操作符,表示非not 查询编号不等于3的图书。
print(BookInfo.objects.filter(~Q(pk=3))) 聚合函数
使用aggregate()过滤器调用聚合函数。聚合函数包括:
Avg 平均,Count 数量,Max 最大,Min 最小,Sum 求和,被定义在django.db.models中。
查询图书的总阅读量。
print(BookInfo.objects.aggregate(Sum('bread'))) 排序
使用order_by对结果进行排序
print(BookInfo.objects.all().order_by('bread')) # 升序
print(BookInfo.objects.all().order_by('-bread')) # 降序 关联查询
由一到多的访问语法:一对应的模型类对象.多对应的模型类名小写_set 例:
print(BookInfo.objects.get(id=1).heroinfo_set.all())
由多到一的访问语法:多对应的模型类对象.多对应的模型类中的关系类属性名 例:
print(HeroInfo.objects.get(id=1).hbook)
访问一对应的模型类关联对象的id语法:多对应的模型类对象.关联类属性_id
print(HeroInfo.objects.get(id=1).hbook_id) 关联过滤查询
由多模型类条件查询一模型类数据:
查询图书,要求图书英雄为"孙悟空"
print(BookInfo.objects.filter(heroinfo__hname='孙悟空'))
查询图书,要求图书中英雄的描述包含"八"
print(BookInfo.objects.filter(heroinfo__hcomment__contains='八'))
由一模型类条件查询多模型类数据:
查询书名为“天龙八部”的所有英雄。
print(HeroInfo.objects.filter(hbook__btitle='天龙八部'))
查询图书阅读量大于30的所有英雄
print(HeroInfo.objects.filter(hbook__bread__gt=30)) 3 修改(修改更新有两种方法)
save 修改模型类对象的属性,然后执行save()方法
hero = HeroInfo.objects.get(hname='猪悟能')
hero.hname='猪八戒'
hero.save()
hero = HeroInfo.objects.get(hname='孙悟空')
hero.hname = '孙行者'
hero.hcomment = '七十二变'
hero.save()
update 使用模型类.objects.filter().update(),会返回受影响的行数
HeroInfo.objects.filter(hname='沙悟净').update(hname='沙和尚') 4 删除(删除有两种方法)
1)模型类对象delete
HeroInfo.objects.get(id=13).delete()
2)模型类.objects.filter().delete()
HeroInfo.objects.filter(id=14).delete() 查询集 QuerySet 查询集,也称查询结果集、QuerySet,
表示从数据库中获取的对象集合。
当调用如下过滤器方法时,Django会返回查询集
(而不是简单的列表):all():返回所有数据。filter():返回满足条件的数据。
exclude():返回满足条件之外的数据。order_by():对结果进行排序。
对查询集可以再次调用过滤器进行过滤,如
print(BookInfo.objects.filter(bread__gt=30).order_by('bpub_date')) 测试自定义的管理器
print(BookInfo.books.all()) book = BookInfo.books.create_book('aabc', date(1988, 1, 1)) except Exception as e:
print("出错了") response = HttpResponse("register get page")
return response def post(self, request):
response = HttpResponse("register post page")
return response

django中对数据库的增删改查的更多相关文章

  1. Android中Sqlite数据库进行增删改查

    今天这篇文章写Sqlite数据库,通过一个小案例来完整讲一下数据库常见的CRUD操作. 先对知识点总结: SQLite数据库 轻量级关系型数据库 创建数据库需要使用的api:SQLiteOpenHel ...

  2. java程序设计课期中考试——数据库的增删改查和简单的js界面

    首先是设计思路,对于数据库的增删改查,我们借助Ecilipse来进行前端和后端的编写.Ecilipse是可以进行java web项目的操作的. 前端,我们选择用使用jsp,所谓的jsp就是可以嵌入其他 ...

  3. Django中多表的增删改查操作及聚合查询、F、Q查询

    一.创建表 创建四个表:书籍,出版社,作者,作者详细信息 四个表之间关系:书籍和作者多对多,作者和作者详细信息一对一,出版社和书籍一对多 创建一对一的关系:OneToOne("要绑定关系的表 ...

  4. 在java中对数据库进行增删改查

    1.java连接MySql数据库 代码区域: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 ...

  5. Android SQL语句实现数据库的增删改查

    本文介绍android中的数据库的增删改查 复习sql语法: * 增 insert into info (name,phone) values ('wuyudong','111') * 删 delet ...

  6. Django 自带的ORM增删改查

     通过Django来对数据库进行增删改查 1 首先创建类,在app应用程序里面的model模块里面创建类,写好数据库信息,方便我们待会初始化: 2 创建在django项目里面的settings里面添加 ...

  7. TP5.1:数据库的增删改查操作(基于面向对象操作)

    我们现实中对数据库的增删改查操作,都是使用模型类进行操作的(表名::),也就是面向对象操作,只有底层的代码用的是数据库操作(Db::table('表名')) 下面我将贴出模型类进行的增删改查操作,通过 ...

  8. django之创建第8-1个项目-数据库之增删改查/数据库数据显示在html页面

    1.为test.DB数据库预先创建下面数据 1    张三    16    2015-01-02    12    李四    17    2015-01-04    13    王五    14  ...

  9. Django基础学习四_数据库的增删改查

    今天主要学习两个东西 1.如何对数据库做增删改查 2.如果将数据库中的数据用html的方式返回到前台 一.对数据库中增删改查操作 1.首先需要先见表,见表的方法我们在“http://www.cnblo ...

随机推荐

  1. 微信小程序开发10-开发流程

    1.Flex布局 Flex是Flexible Box的缩写,意为”弹性布局”,用来为盒状模型提供最大的灵活性.任何一个容器都可以指定为Flex布局. 2.设置容器,用于统一管理容器内项目布局,也就是管 ...

  2. Rxjava学习(一基础篇)

    一.Rxjava跟EventBus的区别 RxJava 是一个响应式编程框架,通过一种扩展的观察者设计模式来实现异步操作. 跟AsyncTask和Handler类似,但是比AsyncTask和Hand ...

  3. JS Error 内置异常类型 处理异常 Throw语句

    Exceptional Exception Handling in JavaScript       MDN资料 Anything that can go wrong, will go wrong. ...

  4. 在Qt中使用Font Awesome图标

    官网: http://fontawesome.io/中文网: http://www.fontawesome.com.cn/GitHub: https://github.com/FortAwesome/ ...

  5. PURGE 的用法说明

    PURGE PurposeUse the PURGE statement to remove a table or index from your recycle bin and release al ...

  6. SQL查询语句执行的逻辑顺序

    一.简介 大家都知道SELECT语句是用来查询数据表中的数据的,构成SELECT语句的还有各种元素(where.from.group by等),不同元素又代表了不同的处理逻辑,那么这些元素在执行查询时 ...

  7. [EffectiveC++]item3:尽可能使用const

    将某些东西声明为const可以帮助编译器检测出错误用法,const 编译器强制实施bitwise constness,但是你code的时候应该使用“概念上的常量性” 当const和non-const成 ...

  8. Entity Framework:代码优先

    一.代码优先Code First EF6支持Oracle ODT 12C Release 3 (net4.5) DataModel(类)-->生成数据库DB 或 存在的数据库DB-->生成 ...

  9. LINQ入门与标准查询运算符

    LINQ的体系结构 查询表达式的完整语法 一.查询表达式必须以from子句开头,以select 或group子句结束.中间可以使用where,orderby ,join,let和其他子句.具有“延迟计 ...

  10. DZ拿shell总结

    今天碰到一个dz的站,好久没拿了 ,拿下shell觉得应该总结一下 Uc_server默认密码 其实有了UC_SERVER就是有了网站的全部权限了,有了UC_SERVER你可以重置管理员密码 可以进后 ...