当前位置: 首页 > news >正文

汝州住房和城乡建设网站网页微信版登陆

汝州住房和城乡建设网站,网页微信版登陆,典当行网站模板,wordpress dux5.1查询数据 通过 MyModel.objects 管理器方法调用查询接口#xff0c;查询数据库 方法说明all()查询全部记录,返回QuerySet查询对象get()查询符合条件的单一记录filter()查询符合条件的多条记录exclude()查询符合条件之外的全部记录 all()方法 MyModel.objects.all() 查询M…查询数据 通过 MyModel.objects 管理器方法调用查询接口查询数据库 方法说明all()查询全部记录,返回QuerySet查询对象get()查询符合条件的单一记录filter()查询符合条件的多条记录exclude()查询符合条件之外的全部记录 all()方法 MyModel.objects.all() 查询MyModel实体中所有的数据等同于 select * from tabel; 返回值: QuerySet容器对象内部存放 MyModel 实例 from bookstore.models import Book books Book.objects.all() for book in books:print(书名, book.title, 出版社:, book.pub)[rootvm mysite2]# python3 manage.py shellfrom bookstore.models import Bookbooks Book.objects.all()for book in books: ... print(书名:, book.title, 价格:, book.price,出版社:, book.pub) ... 书名: java 价格: 50.00 出版社: for book in books: ... print(book) ... Book object (1) Book object (2)#数据库信息 ------------------------------------- | id | title | price | market_price | pub | ------------------------------------- | 1 | java | 50.00 | 0.00 | | ------------------------------------- 返回自定义字符串 在模型类中重写__str__ 方法,实现自定义默认的字符串 [rootvm mysite2]# vim bookstore/models.pyclass Book(models.Model):title ...def __str__(self):info 书名: %s, 出版社: %s, 定价: %s % (self.title, self.pub, self.price)return info#重新登录终端 [rootvm mysite2]# python3 manage.py shellfrom bookstore.models import Bookbooks Book.objects.all()for book in books: ... print(book) ... 书名: java, 出版社: , 定价: 50.00 书名: python, 出版社: 清华, 定价: 50.00查询返回指定列(字典表示) 用法: MyModel.objects.values(列1,列2…) 作用: 查询部分列的数据并返回同select 列1,列2 from xxx 返回值: QuerySet返回查询结果容器容器内存字典每个字典代表一条数据格式为: {‘列1’: 值1, ‘列2’: 值2} from bookstore.models import Book books Book.objects.values(title, pub) for book in books:print(书名, book[title], 出版社:, book[pub])print(book, book)#打印 书名 java 出版社: book {title: java, pub: } 书名 python 出版社: 清华 book {title: python, pub: 清华} ...查询返回指定列元组表示) 用法:MyModel.objects.values_list(列1,列2…) 作用:返回元组形式的查询结果返回值: QuerySet容器对象内部存放元组 会将查询出来的数据封装到元组中,再封装到查询集合QuerySet中 from bookstore.models import Book books Book.objects.values_list(title, pub) for book in books:print(书名, book[0], 出版社:, book[1])print(book, book)#打印 书名 java 出版社: book (java, ) 书名 python 出版社: 清华 book (python, 清华)... 排序查询 order_by 方法:order_by用法:MyModel.objects.order_by(‘-列’,‘列’)作用: 用SQL 语句的ORDER BY对查询结果根据某个字段选择性的进行排序。默认是按照升序排序,降序排序则需要在列前增加’-表示 from bookstore.models import Book books Book.objects.order_by(-price) for book in books:print(书名:, book.title, 定价:, book.price)书名: xiyou 定价: 700.00 书名: c 定价: 100.00 书名: honglou 定价: 90.00 条件查询 - filter 方法: filter(条件)语法: MyModel.objects.filter(属性1值1, 属性2值2) 返回值QuerySet容器对象,内部存放 MyModel 实例 说明: 当多个属性在一起时为与关系 # 查询书中出版社为清华大学出版社的图书 from bookstore.models import Book books Book.objects.filter(pub清华,price100) for book in books:print(书名:, book.title)书名: c# 查询Author实体中name为王老师并且age是28岁的authorsAuthor.objects.filter(name王老师,age28)条件查询 - get 方法: get(条件) 语法: MyModel.objects.get(条件) 作用返回满足条件的唯一一条数据编码时一定要加try。 说明: 该方法只能返回一条数据 - 查询结果多余一条数据则抛出,Model.MultipleObjectsReturned异常 - 查询结果如果没有数据则抛出Model.DoesNotExist异常使用 from bookstore.models import Bookbook Book.objects.get(id1)print(book) 书名: java, 出版社: , 定价: 50.00print(book.title) java#报错book Book.objects.get(id9) ... bookstore.models.Book.DoesNotExist: Book matching query does not exist. book Book.objects.get(pub清华) ... bookstore.models.Book.MultipleObjectsReturned: get() returned more than one Book -- it returned 2! 对比filter和get方法 filter()方法返回的是QuerySet类型可以有0个、1个、多个对象。 get()方法返回的是一个模型类的对象只能返回1个对象0个或多个将会报错所以对于get方法编码时一定要加try。 条件查询 - exclude 方法: exclude(条件) 语法: MyModel.objects.exclude(条件)作用:返回不包含此 条件的 全部的数据集 #查询 清华 出版社定价等于50以外的全部图书books Book.objects.exclude(pub清华, price50)for book in books: ... print(book)使用orm做数据的查询注意 MyModel.objects.all();MyModel.objects.values();MyModel.objects.values_list();MyModel.objects.get(); MyModel.objects.filter();MyModel.objects.exclude(); MyModel.objects.order_by();只有get返回单个对象其他返回的是QuerySet容器。values返回的容器中的元素是字典values_list则是元组其他都是对象 查询谓词 每一个查询谓词是一个独立的查询功能 __exact : 等值匹配 Author.objects.filter(id__exact1) #等同id1 # 等同于select * from author where id 1__contains : 包含指定值 Author.objects.filter(name__containsw) # 等同于 select * from author where name like %w%__startswith : 以 XXX 开始 __endswith : 以 XXX 结束 __gt : 大于指定值 Author.objects.filer(age__gt50) # 等同于 select * from author where age 50__lt : 小于 __gte : 大于等于 __lte : 小于等于__in : 指定范围内 Author.objects.filter(country__in[中国,日本,韩国]) # 等同于 select * from author where country in (中国,日本,韩国)__range : 指定的区间范围内 # 查找年龄在某一区间内的所有作者包含边界值 Author.objects.filter(age__range(35,50)) # 等同于 SELECT ... WHERE Author BETWEEN 35 and 50;详细内容参见: https://docs.djangoproject.com/en/2.2/ref/models/querysets/#field-lookups 修改数据 修改单个实体的某些字段值的步骤: 查通过 get() 得到要修改的实体对象改通过 对象.属性 的方式修改数据存通过 对象.save() 保存数据 from bookstore.models import Bookabook Book.objects.get(id1)print(abook.price) 50.00abook.price 10.5abook.save()print(abook.price) 10.5通过 QuerySet 批量修改 对应的全部字段 直接调用QuerySet的update(属性值) 实现批量修改 也可批量改一条 返回值更新数据的数量 # 将id大于3的所有图书价格定为0元 books Book.objects.filter(id__gt3) books.update(price0)# 将所有书的零售价定为100元 books Book.objects.all() books.update(market_price100)删除数据 删除记录是指删除数据库中的一条或多条记录删除单个MyModel对象或删除一个查询结果集(QuerySet)中的全部对象都是调用 delete()方法 删除单个对象 查找查询结果对应的一个数据对象调用这个数据对象的delete()方法实现删除 try:auth Author.objects.get(id1)auth.delete() except:print(删除失败)删除查询结果集 查找查询结果集中满足条件的全部QuerySet查询集合对象调用查询集合对象的delete()方法实现删除生成一条sql执行 # 删除全部作者中年龄大于65的全部信息 auths Author.objects.filter(age__gt65) auths.delete()图书管理系统搭建 (结合页面完成增删改查) 查询功能url: http://127.0.0.1:8000/bookstore/booksview: views.books_view html bookstore/books.htmlmodels: Book类添加功能url: http://127.0.0.1:8000/bookstore/add_bookview: views.add_book html bookstore/add_book.htmlmodels: Book类 预览添加图书 ID 书名 出版社 定价 零售价 操作 1 java 10.50 0.00 修改 删除 ...[rootvm ~]# mysql -uroot -p123456 -e select * from mysite2.bookstore_book ------------------------------------------- | id | title | price | market_price | pub | ------------------------------------------- | 1 | java | 50.00 | 0.00 | | | 2 | python | 50.00 | 0.00 | 清华 | | 3 | c | 100.00 | 0.00 | 清华 | | 4 | xiyou | 700.00 | 0.00 | beida | | 5 | honglou | 90.00 | 0.00 | beida | ------------------------------------------- 回顾下之前创建好的配置 [rootvm mysite2]# python3 manage.py startapp bookstore [rootvm mysite2]# vim mysite2/settings.pyINSTALLED_APPS [ ...bookstore,[rootvm mysite2]# vim bookstore/models.pyclass Book(models.Model):title models.CharField(书名, max_length50, default)price models.DecimalField(定价, max_digits7, decimal_places2, default0.0)# 新增属性/字段 要有默认值market_price models.DecimalField(零售价,max_digits5,decimal_places2,default0.0)pub models.CharField(出版社, max_length50,default)def __str__(self):info 书名: %s, 出版社: %s, 定价: %s % (self.title, self.pub, self.price)return info 新增bookstore/books.html配置 [rootvm mysite2]# vim bookstore/urls.py from django.urls import path from . import viewsurlpatterns [path(books,views.books_view), ][rootvm mysite2]# vim bookstore/views.py from django.shortcuts import render from django.http import HttpResponse, HttpResponseRedirect from .models import Book# Create your views here. def add_book(request):books Book.objects.all()return render(request,bookstore/books.html,locals())[rootvm mysite2]# mkdir -p bookstore/templates/bootstore [rootvm mysite2]# vim bookstore/templates/bootstore/books.html !DOCTYPE html html langen headmeta charsetUTF-8title图书列表/title /head body /body /htmlhttp://192.168.1.11:8000/bookstore/books #访问验证路由#补充books.html功能 #href/bookstore/add_book bookstore前加/ 从/ 不加是当前页面 !DOCTYPE html html langen headmeta charsetUTF-8title图书列表/title /head body a href/bookstore/add_book添加图书/a tabletrthID/thth书名/thth出版社/thth定价/thth零售价/thth操作/th/tr{% for book in books %}trtd{{ book.id }}/tdtd{{ book.title }}/tdtd{{ book.pub }}/tdtd{{ book.price }}/tdtd{{ book.market_price }}/tdtda href#修改/aa href#删除/a/td/tr{% endfor %} /table /body /html写添加功能/bookstore/add_book [rootvm mysite2]# vim mysite2/urls.pyurlpatterns [path(add_book/,include(add_book.urls)),[rootvm mysite2]# vim bookstore/urls.py from django.urls import path from . import viewsurlpatterns [path(add_book,views.add_book), ][rootvm mysite2]# vim bookstore/views.py from django.shortcuts import render from django.http import HttpResponse, HttpResponseRedirect from .models import Book# Create your views here. def add_book(request):if request.method GET:# 返回添加图书的页面return render(request,bookstore/add_book.html)elif request.method POST:# return HttpResponse(添加图书成功) #结合下方完整的add_book.html验证逻辑#OK了再注释写下面的功能# 1.获取用户在add_book.html表单控件中输入的数据title request.POST[title]pub request.POST[pub]price request.POST[price]market_price request.POST[market_price]# 2. 检查数据...# 3.添加到数据库Book.objects.create(titletitle,pubpub,priceprice,market_pricemarket_price)# 重定向到图书列表return HttpResponseRedirect(/bookstore/books)[rootvm mysite2]# vim bookstore/templates/bootstore/add_book.html #先验证title再设计form表单 !DOCTYPE html html langen headmeta charsetUTF-8title添加图书/title /head body form action/bookstore/add_book methodpostp书名:input typetext nametitle/pp出版社:input typetext namepub/pp定价:input typetext nameprice/pp零售价:input typetext namemarket_price/ppinput typesubmit value添加/p /form /body /html修改和删除 通过浏览器地址栏向服务器传参方式有哪些1. path转换器2. 查询字符串 修改功能url: http://127.0.0.1:8000/bookstore/update_book/1view: views.update_book html bookstore/update_book.htmlmodels: Book类 删除功能 url: http://127.0.0.1:8000/bookstore/del_book?bid1view: views.del_book html bookstore/del_book.htmlmodels: Book类从业务角度谈谈删除问题1. 真正删除时一般要有提示信息防止误删。2. 标记删除。常用不是把数据真正的从数据库中删除掉而是增加一个标记以示区分。[rootvm mysite2]# vim bookstore/urls.py from django.urls import path from . import views urlpatterns [path(books,views.books_view),path(add_book,views.add_book),path(update_book/int:bid,views.update_book),#使用了path转换器与查询字符串选其中一个使用path(del_book,views.del_book), ][rootvm mysite2]# vim bookstore/views.py from django.http import HttpResponse, HttpResponseRedirect from django.shortcuts import renderfrom .models import Book# Create your views here. def books_view(request):books Book.objects.all()return render(request,bookstore/books.html,locals())def add_book(request):if request.method GET:# 返回添加图书的页面return render(request,bookstore/add_book.html)elif request.method POST:# 1.获取用户在表单中输入的数据title request.POST[title]pub request.POST[pub]price request.POST[price]market_price request.POST[market_price]# 2. 检查数据...# 3.添加到数据库Book.objects.create(titletitle,pubpub,priceprice,market_pricemarket_price)# return HttpResponse(添加图书成功)# 重定向到图书列表return HttpResponseRedirect(/bookstore/books)def update_book(request, bid):# 根据bid从数据库中获取要修改的book对象# get加trytry:book Book.objects.get(idbid)except:return HttpResponse(图书编号有误)if request.method GET:return render(request,bookstore/update_book.html,locals())elif request.method POST:# 1查【2改3保存】# 获取用户输入的新的数据给属性赋值title request.POST[title]pub request.POST[pub]price request.POST[price]market_price request.POST[market_price]book.title titlebook.pub pubbook.price pricebook.market_price market_price# 保存book.save()# return HttpResponse(修改图书成功)# 重定向到图书列表return HttpResponseRedirect(/bookstore/books)def del_book(request):# 1.根据查询字符串获取图书ID.bid request.GET.get(bid)# 2.根据图书ID获取图书对象try:book Book.objects.get(idbid)# 3.直接执行delete操作book.delete()except:return HttpResponse(图书ID有误)# 4. 重定向到列表页return HttpResponseRedirect(/bookstore/books) [rootvm mysite2]# vim bookstore/templates/bookstore/books.html !DOCTYPE html html langen headmeta charsetUTF-8title图书列表/title /head body a href/bookstore/add_book添加图书/a tabletrthID/thth书名/thth出版社/thth定价/thth零售价/thth操作/th/tr{% for book in books %}trtd{{ book.id }}/tdtd{{ book.title }}/tdtd{{ book.pub }}/tdtd{{ book.price }}/tdtd{{ book.market_price }}/tdtda href/bookstore/update_book/{{ book.id }}修改/aa href/bookstore/del_book?bid{{ book.id }}删除/a/td/tr{% endfor %} /table /body /html[rootvm mysite2]# vim bookstore/templates/bookstore/update_book.html !DOCTYPE html html langen headmeta charsetUTF-8title修改图书/title /head body form action/bookstore/update_book/{{ book.id }} methodpostp书名:input typetext nametitle value{{ book.title }}/pp出版社:input typetext namepub value{{ book.pub }}/pp定价:input typetext nameprice value{{ book.price }} /pp零售价:input typetext namemarket_price value{{ book.market_price }} /ppinput typesubmit value修改/p /form /body /html小的项目管理 cMTV 运维数据整理企业级的项目前端T 基于文档json格式数据RESTful 接口规范跨域问题解决后端cMV python web 聚合查询 聚合查询是指对一个数据表中的一个字段的数据进行部分或全部进行统计查询,查bookstore_book数据表中的全部书的平均价格查询所有书的总个数等,都要使用聚合查询 不带分组聚合 不带分组的聚合查询是指导将全部数据进行集中统计查询聚合函数【需要导入】聚合函数有: Sum, Avg, Count, Max, Min from django.db.models import * MyModel.objects.aggregate(结果变量名聚合函数(列))返回结果由 结果变量名和值组成的字典 # 得到所有书的平均价格 from bookstore.models import Book from django.db.models import * result Book.objects.aggregate(myAvgAvg(price)) print(result, result) # result {myAvg: Decimal(189.700000)} print(平均价格是:, result[myAvg]) #平均价格是: 189.700000# 得到数据表里有多少本书 from django.db.models import Count result Book.objects.aggregate(mycntCount(title)) print(result, result) #result {mycnt: 5} print(数据记录总个数是:, result[mycnt]) #数据记录总个数是: 5 分组聚合走两步 分组聚合是指通过计算查询结果中每一个对象所关联的对象集合从而得出总计值(也可以是平均值或总和)即为查询集的每一项生成聚合。 1、通过先用查询结果MyModel.objects.values 查找查询要分组聚合的列返回 QuerySet 结果集,内部存储结果的字典 MyModel.objects.values(列1, 列2)pub_set Book.objects.values(pub) print(pub_set) # QuerySet [{pub: 清华}, {pub: 清华}, {pub: 清华}, {pub: beida}, {pub: beida}]2、通过返回结果的 QuerySet.annotate 方法分组聚合得到分组结果 QuerySet.annotate(结果变量名聚合函数(列))pub_count_set pub_set.annotate(myCountCount(pub),mysumSum(price)) print(pub_count_set) QuerySet [{pub: 清华, myCount: 3, mysum: Decimal(160.50)}, {pub: beida, myCount: 2, mysum: Decimal(788.00)}] for item in pub_count_set: ... print(item[pub],item[myCount],item[mysum]) ... 清华 3 160.50 beida 2 788.00 F对象field 一个F对象代表数据库中某条记录的字段的信息 作用: 通常是对数据库中的字段值在不获取的情况下进行操作用于类属性(字段)之间的比较。使用时需要先导入 from django.db.models import F F(列名) 说明: 一个 F() 对象代表了一个model的字段的值F对象通常是对数据库中的字段值在不加载到内存中的情况下生成sql直接在数据库服务器端进行操作 基本使用 更新Book实例中所有的零售价涨10元 from django.db.models import Ffrom bookstore.models import BookBook.objects.all().update(market_priceF(market_price)10) 生成sqlUPDATE bookstore_book SET market_price (bookstore_book.market_price 10) 5 #作用了5条数据# 以上做法好于如下代码有循环读写慢 books Book.objects.all() for book in books:book.market_pricebook.marget_price10book.save()使用查询谓词__gt 对数据库中两个字段的值进行比较列出哪儿些书的零售价高于定价? from django.db.models import F from bookstore.models import Book books Book.objects.filter(market_price__gtF(price)) SELECT * FROM bookstore_book WHERE bookstore_book.market_price (bookstore_book.price) for book in books:print(book.title, 定价:, book.price, 现价:, book.market_price)#go 定价: 88.00 现价: 108.00Q对象query 完整的表达逻辑操作在条件中用来实现除 and() 以外的 or(|) 或 not(~) 操作需要先导入再使用 如: 想找出定价低于20元 或 清华大学出版社的全部书可以写成 from django.db.models import Q Q(条件1)|Q(条件2) # 条件1成立或条件2成立 Q(条件1)Q(条件2) # 条件1和条件2同时成立 Q(条件1)~Q(条件2) # 条件1成立且条件2不成立 ...from django.db.models import Q # 查找清华大学出版社的书或价格低于50的书 Book.objects.filter(Q(market_price__lt50) | Q(pub清华)) #QuerySet [Book: 书名: java, 出版社: 清华, 定价: 10.50, Book: 书名: python, 出版社: 清华, 定价: 50.00, Book: 书名: c, 出版社: 清华, 定价: 100.00, Book: 书名: xiyou, 出版社: beida, 定价: 700.00]# 查找不是机械工业出版社的书且价格低于50的书 Book.objects.filter(Q(market_price__lt50) ~Q(pub清华)) QuerySet [Book: 书名: xiyou, 出版社: beida, 定价: 700.00]原生的数据库操作方法 模型管理器的raw 在django中可以使用模型管理器的raw方法来执行select语句进行数据查询 MyModel.objects.raw(sql语句[拼接参数]) #防止sql注入返回值: RawQuerySet 集合对象 【只支持基础操作比如循环】 books Book.objects.raw(select * from bookstore_book) for book in books:print(book)#sql注入攻击问题 s1 Book.objects.raw(select * from bookstore_book where id%s%(1 or 11)) #select * from bookstore_book where id%s%(表单控件获得)) #select * from bookstore_book where id1 or 11; id1没有的时候查询了所有s1 RawQuerySet: select * from bookstore_book where id1 or 11for book in s1: ... print(book) ... 书名: java, 出版社: 清华, 定价: 10.50 书名: python, 出版社: 清华, 定价: 50.00 书名: c, 出版社: 清华, 定价: 100.00 书名: xiyou, 出版社: beida, 定价: 700.00 书名: go, 出版社: beida, 定价: 88.00#防止sql注入拼接参数1 or之间的空格会发生截断后面的不要 s2 Book.objects.raw(select * from bookstore_book where id%s,[1 or 11])for book in s2: ... print(book) ... 书名: java, 出版社: 清华, 定价: 10.50 游标cursor 使用django中的游标cursor直接对数据库进行 增删改查 操作使用前需要先导入 from django.db import connection用创建cursor类的构造函数创建cursor对象再使用cursor对象 为保证在出现异常时能释放cursor资源,通常使用with语句进行创建操作 from django.db import connection with connection.cursor() as cur:cur.execute(执行SQL语句, 拼接参数)# 用SQL语句将id 为 10的 书的出版社改为 XXX出版社 from django.db import connection with connection.cursor() as cur: cur.execute(update bookstore_book set pubXXX出版社 where id10;)#拼接参数 with connection.cursor() as cur:cur.execute(update bookstore_book set pubXXX出版社 where id%s,[1 or 12])# 删除 id为1的一条记录 with connection.cursor() as cur: cur.execute(delete from bookstore_book where id10;)
http://www.sadfv.cn/news/372634/

相关文章:

  • 怎么在网站做浮动图标扬州建设工程信息网站
  • 沈阳seo网站推广wordpress 视频无广告
  • 网站建设推广话术开场白wordpress编辑器可视化在那里
  • 句容做网站跨境电商有哪几个平台
  • 泰安如何选择网站建设网站建设与管理期末总结
  • 装修怎么做网站wordpress更新ftp
  • 杭州城市建设网站深圳网站建设力荐上榜网络
  • 电子商务网站后台核心管理深圳网站建设加q5299丶14602推广
  • 六安高端网站建设公司厦门市建设管理协会网站
  • 做视频网站犯法吗毕业设计做网站难吗
  • 上海企业网站定制信息产业部 备案网站
  • 杂志网站模板网站建设冫首选金手指
  • 网站建设背景及意义一键生成表白网站
  • 网站策划编辑怎么在百度上能搜到自己的网站
  • 网站经营性备案机构培训班
  • 网站外链如何建设最有用全屋定制高端品牌有哪些
  • 怎么推广自己的网站个人营销型网站
  • 湖南网站建设大全蒙自网站开发
  • 个人网站建设的方案网站建设公司有哪些内容
  • 设置网站字体搭建一个公司网站
  • 搭建合作平台呼和浩特网站seo
  • 做刷机网站赚钱吗wordpress 关闭 ssl
  • 常设中国建设工程法律网站怎样做视频播放网站
  • 广西网站建设哪里有服务器正常网站打不开
  • 网站网格设计it建设人才网
  • 温州网站建设成功案例计算机网站开发图片
  • 松江品划做企业网站seo白帽和黑帽的区别
  • 金华住房与城乡建设部网站网加做网站推广
  • 做网站标题企业网站建
  • 相亲网站建设wordpress主题需要ftp