八、Django分组查询
分组查询、F查询和Q查询 分组查询 统计每个出版社出版的书籍的平均价格 第一种方式 123obj = models.Book.objects.values('publishs_id').annotate(a=Avg('price'))## select avg (price) from app01_ book GROUP BY publishs_ id; 第二种方式 12obj = models.Publish.objects.annotate(a=Avg('book__price'))return HttpResponse(obj.values('a')) F查询 F查询一般用于单表两个字段比较 示例表 123456789class Book(models.Model): nid = models.AutoField(primary_key=True) title = models.CharField( max_length=32) good = models.IntegerFie ...
七、django学习之聚合函数
七、django学习之聚合函数 如何使用 12345678from django.db.models import Avg,Max,Min,Summodels.Book.objects.all().aggregate(Avg('price'))models.Book.objects.all().aggregate(price = Avg('price'))#{'price':22.6}Book.objects.aggregate(Avg('price'), Max('price'), Min('price')) #count('id'),count(1)也可以统计个数,Book.objects.all().aggregete和Book.objects.aggregate(),都可以#{'price__avg': 34.35, 'price__max': Decimal( ...
六、Django学习之基于下划线的跨表查询
六、Django学习之基于下划线的跨表查询 一对一 正向查询的例子为 已知用户名,查询用户的电话号码。反向查询例子反之。 正向查询 其中下划线前的表示表名,无下划线的表示的是Author表 12result = models.Author.objects.filter(name='admin').values("authorDetail__telephone",'name','age') 反向查询 values可以不写,则去除能拿到的全部数据。filter中的双下划线表示联表 1result = models.AuthorDetail.objects.filter(author__name='admin').values('telephone') 一对多 正向查询 1result = models.Book.objects.filter(title='第一本书').values("publishs__name") ...
五、Django基于对象的跨表查询
六、基于对象的跨表查询 正向与反向查询 关键在于ForeignKey字段写的位置。例如下面这段代码, 关系属性(字段)写在哪个类(表)里面,从当前类(表)的数据去查询它关联类(表)的数据叫做正向查询,反之叫做反向查询 Publish查询Book的内容就是反向查询 Book查询Publish的内容就是正向查询 123456789101112131415161718class Publish(models.Model): name=models.CharField( max_length=32) city=models.CharField( max_length=32) email=models.EmailField() #charfield -- asdfasdf def __str__(self): return self.name#书籍表class Book(models.Model): nid = models.AutoField(primary_key=True) title = models.CharField( m ...
四、Django关系表字段介绍
关系表介绍及使用 一对一关系 12xx = models.OneToOneField(to='表名',to_field='字段名',on_delete=models.CASCADE) #on_delete:删除时的一些级联效果,to_field可以不写,默认是关联到另一张表的主键,on_delete在1.x版本的django中不用写,默认是级联删除的,2.x版本的django要写. 增加数据 方式1 123456789101112new_author_detail = models.AuthorDetail.objects.create( birthday='1979', telephone='138', addr='black' ) # 方式1 models.Author.objects.create( name='王涛', age=18, #直接将对象赋 ...
三、Django查询表记录
查询接口 all() 查询所有结果,结果是queryset类型 filter(**kwargs) and条件关系:参数用逗号分割表示and关系 1234models.Student.objects.filter(id=1,name='dazhuang').update( name='大壮禅师', age = 78,) 其中filter的参数也可以通过字典方式传入 12odels.Student.objects.filter(**{'id':7,'name':'大壮禅师'}).update(age=100)models.Student.objects.all().filter(id=7) #queryset类型可以调用fitler在过滤 get(**kwargs) 返回与所给筛选条件相匹配的对象,不是queryset类型,是行记录对象,返回结果有且只有一个,如果符合筛选条件的对象超过一个或者没有都会抛出错误。捕获异常try。 Book.object ...
二、Django简单的增删改查
增加数据 第一种方式 12345678910def index(request): #创建记录方式1 #实例化要添加的记录(对象) student_obj = models.Student( name='dazhuang', age=23, ) #自动刷新并存储到数据库 student_obj.save() return render(request,'index.html') 第二种方式 常用方法 1234567def index(request): #创建记录方式2 # new_obj为返回值,返回这个类的对象 (model对象) new_obj = models.Student.objects.create(name='xiaozhuang',age=5) print(new_obj.name) print(new_obj.age) return render(request,'index.html& ...
一、Django连接与建立数据库
Django连接与建立数据库 连接MySQL数据库 配置文件 找到DATABASES对应的设置,修改为MySQL的配置即可 12345678910DATABASES = { 'default': { 'ENGINE': 'django.db.backends.mysql', 'NAME':'bms', # 要连接的数据库,连接前需要创建好 'USER':'root', # 连接数据库的用户名 'PASSWORD':'', # 连接数据库的密码 'HOST':'127.0.0.1', # 连接主机,默认本级 'PORT':3306 # 端口 默认3306 ...
Python面向对象
类的空间问题 添加对象或类的属性 添加对象或类的属性哪里(类__init__方法中、类方法中、类外)都可以添加。 1234567891011121314class A: def __init__(self,name): self.name = name def func(self,sex): self.sex = sex# 类外面可以:obj = A('barry')obj.age = 18print(obj.__dict__) # {'name': 'barry', 'age': 18}# 类内部也可以:obj = A('barry') # __init__方法可以。obj.func('男') # func 方法也可以。 对象以及类查询"名字"的顺序 对象查找属性的顺序:先从对象空间找 ------> 类空间找 ------> 父类空间找 ------->… ...
Python网络编程
基础理论知识 C/S 、B/S架构 架构名称 定义 优点 缺点 C/S 基于客户端与用户端之间的架构 界面和操作丰富,安全性容易保证,响应速度快 需要开发两套程序,开发维护成本高,兼容性差 B/S 基于C/S架构的一种特殊的C/S架构,浏览器与服务端之间的架构。 分布性强,客户端几乎不需要维护,开发简单,共享性强,维护简单方便 个性化低,安全性及响应速度需要花费巨大设计成本 CS响应速度快,安全性强,一般应用于局域网中,但是开发维护成本高;BS可以实现跨平台,客户端零维护,但是个性化能力低,响应速度较慢。所以有些单位日常办公应用BS,在实际生产中使用CS结构。 网络通信 单个客户端与服务端通信 服务端代码示例 1234567891011121314151617181920212223242526import socket# 1. 创建socket对象(买电话)phone = socket.socket(socket.AF_INET, socket.SOCK_STREAM) # 参数可以默认不写# 2. 绑定IP地址和端口 # 安装电话卡phone. ...