django第8天(在测试文件中运行django项目|单表操作)
django第8天
在测试文件中运行django项目
1.将项目配置文件数据库该为mysql,修改配置信息
PORT = '127.0.0.1'
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql',
'NAME': 'dj34',
'HOST':PORT,
'USER':'root',
'PASSWORD':'123',
}
}
2.在项目文件下__init__.py中
import pymysql
pymysql.install_as_MySQLdb()
3.在项目文件夹下创建test.py测试文件
4.将项目导入环境变量
import os
os.environ.setdefault('DJANGO_SETTINGS_MODULE','dj35_1.settings')
5.直接导入django,并运行
import django
django.setup()
6.导入models模块需要使用的类
from app0.models import User
简单增删改查
增
1.u = User(user="zb",pwd="123",time="2019-03-05")
u.save()
2.User.objects.create(user="root",pwd="root",type=1)
查
①u1 = User.objects.get(id=1)
print(u1.user)
②User.objects.all()查询所有
③User.objects.filter()按条件查询
u2 = User.objects.filter(id =1,user="zhoubo")[0]
print(u2)
get方法查不到或查到的数据大于1都会报错
改
User.objects.filter(name='Owen').update(name='Owen_best')
users = User.objects.filter(name='Owen_best')
for user in users:
user.name = 'Owen'
user.save()
#update方法的使用对象是对象列表
#对象不能直接使用update()方法
#也就是user=User.objects.all().first()
#user没有update方法
删
User.objects.filter(id=1,user="zhoubo").delete()
User.objects.filter(id=2).first().delete()
#对象和对象列表都可以调用delete方法
单表操作函数
1. all():查询所有结果list,支持正向索引取值[i],支持索引切片[m:n]
#u3 = User.objects.all()[1]
#print(u3)
#u4 = User.objects.all()[1:4]
#print(u4)
#不支持负向索引,做了优化,每次限制读取21条,
2. filter(**kwargs):查询满足条件的所有结果list
3. get(**kwargs):查询满足条件的唯一对象obj,查询结果不为obj则抛出异常
4. exclude(**kwargs):查询满足条件的对立面的所有结果list
#u5 = User.objects.exclude(id=2)
#print(u5)
#所有id不等于2的都会显示
5. order_by(*field):查询按照指定字段进行排序后的所有结果list,'tag_name'代表正序,'-tag_name'代表降序
'''
u6 = User.objects.all().order_by('id')
print(u6)
u7 = User.objects.all().order_by('-id')
print(u7)
'''
6. reverse():反转排序查询的所有结果list
'''
u8 = User.objects.all()
print(u8)
u9 = User.objects.all().reverse()
print(u9)
<QuerySet [<User: zb>, <User: egon>, <User: ahh>, <User: root>]>
<QuerySet [<User: zb>, <User: egon>, <User: ahh>, <User: root>]>
查询结果一样
u10 = User.objects.all().order_by('-id')
print(u10)
u11 = User.objects.all().order_by('id').reverse()
print(u11)
查询结果一样,reverse需要跟在order_by以后使用才有反序效果
'''
7. count():统计返回查询结果list的长度
'''
u12 = User.objects.all().count()
print(u12)
'''
8. first():返回查询结果中的第一个对象obj
9. last():返回查询结果中的最后一个对象obj
10. exists():判断查询结果是否存在,值为布尔类型
11. values(*field):按照指定字段(们)进行查询,返回存放包含字段(们)的字典的列表list
'''
u13 = User.objects.values('user','type')
print(u13)
<QuerySet [{'user': 'zb', 'type': False}, {'user': 'egon', 'type': False}, {'user': 'ahh', 'type': False}, {'user': 'root', 'type': True}]>
'''
12. values_list(*field):同values类似,返回存放数据的元组的列表list
'''
u14 = User.objects.values_list('user','type')
print(u14)
<QuerySet [('zb', False), ('egon', False), ('ahh', False), ('root', True)]>
'''
13. distinct():从查询结果中剔除重复字段(一般和values结合使用)
#一般表都有主键,主键唯一
#distinct去重是需要都不相同
#故和values结合使用,去掉主键字段
模糊查询
# 整型相关
age__exact=8 # 确切匹配8
age__in=[8, 10] # 8或10
'''
u15 = User.objects.filter(age__in=[18,20])
print(u15)
'''
age__gt=8 # 大于8
'''
u16 = User.objects.filter(age__gt=18)
print(u16)
'''
age__gte=8 # 大于等于8
age__lt=8 # 小于8
age__lte=8 # 小于等于8
age__range=[8, 10] # 8到10之间
age__isnull=0|1 # 0:is not null | 1:is null
# 字符串相关
name__startswith # 后方模糊匹配
name__endswith # 前方模糊匹配
name__contains # 前后方均模糊匹配
name__regex # 正则匹配
name__istartswith # 不区分大小写后方模糊匹配(i开头就是不区分大小写)
# 时间相关
birthday__year=2008 # 时间年份模糊匹配
F查询
# 通过字段名获取可以直接做运算的查询结果
from django.db.models import F
F('tag_name')
# 案例一:将id为1的结果年龄增加1
User.objects.filter(id=1).update(age=F('age')+1)
# 案例二:查询id是年龄1/4的结果
user = User.objects.filter(id=F('age')/4)
'''
from django.db.models import F
# User.objects.all().update(age = F('age')+1)
u17 = User.objects.filter(id = F('age')/3)
print(u17)
'''
Q查询
# 完成逻辑运算方式的查询
from django.db.models import Q
# 与
User.objects.filter(Q(id=1) & Q(age=10))
与的时候可以多个条件用,分开
# 或
User.objects.filter(Q(id=1) | Q(id=2))
# 非
User.objects.filter(~Q(id=1))
'''
from django.db.models import Q
u19 = User.objects.filter(Q(id=2)|Q(user="zb"))
print(u19)
'''
django第8天(在测试文件中运行django项目|单表操作)的更多相关文章
- Pytest权威教程11-模块及测试文件中集成doctest测试
目录 模块及测试文件中集成doctest测试 编码 使用doctest选项 输出格式 pytest-specific 特性 返回: Pytest权威教程 模块及测试文件中集成doctest测试 编码 ...
- Django中模型层中ORM的单表操作
ORM概念: MVC或者MVC框架中包括一个重要的部分,就是ORM,它实现了数据模型与数据库的解耦,即数据模型的设计不需要依赖于特定的数据库,通过简单的配置就可以轻松更换数据库,这极大的减轻了开发人员 ...
- JMeter - 如何在多个测试环境中运行多个线程组
概述: 作为性能测试的一部分,我不得不为我们的应用程序提供各种用例/业务工作流程的性能测试脚本.当我设计我的性能测试脚本时,我将确保我有本文中提到的可重用测试脚本. JMeter - 如何创建可重用和 ...
- SQL SERVER 使用BULK Insert将txt文件中的数据批量插入表中(1)
1/首先建立数据表 CREATE TABLE BasicMsg( RecvTime FLOAT NOT NULL , --接收时间,不存在时间相同的数据 AA INT NOT NULL, --24位地 ...
- Django模型层之单表操作
Django模型层之单表操作 一 .ORM简介 我们在使用Django框架开发web应用的过程中,不可避免地会涉及到数据的管理操作(如增.删.改.查),而一旦谈到数据的管理操作,就需要用到数据库管理软 ...
- 第五章、Django之模型层---单表操作
目录 第五章.Django之模型层---单表操作 一.ORM查询 二.Django测试环境搭建 三.单表查询 1. 增 2. 改 3. 删 4. 查 第五章.Django之模型层---单表操作 一.O ...
- Django之模型层第一篇:单表操作
Django之模型层第一篇:单表操作 一 ORM简介 我们在使用Django框架开发web应用的过程中,不可避免地会涉及到数据的管理操作(如增.删.改.查),而一旦谈到数据的管理操作,就需要用到数 ...
- 6、Django之模型层第一篇:单表操作
一 ORM简介 我们在使用Django框架开发web应用的过程中,不可避免地会涉及到数据的管理操作(如增.删.改.查),而一旦谈到数据的管理操作,就需要用到数据库管理软件,例如mysql.oracle ...
- web框架开发-Django模型层(1)之ORM简介和单表操作
ORM简介 不需要使用pymysql的硬编码方式,在py文件中写sql语句,提供更简便,更上层的接口,数据迁移方便(有转换的引擎,方便迁移到不同的数据库平台)…(很多优点),缺点,因为多了转换环节,效 ...
随机推荐
- [題解](DP)CF713C_Sonya and Problem Wihtout a Legend
對於不嚴格單調的我們可以n^2DP,首先每個數一定在原數組中出現過,如果沒出現過不如減小到出現過的那個花費更小,效果相同 所以f[i][j]表示把i改到離散化后j的最小代價,每次維護前一狀態最小值mn ...
- UWP Popup 弹出提示框
一:需求 做一个类似于安卓的弹出消息框,如图.当用户点击下载或者选择时,能够从底部弹出一个提示框,用于提示用户. 二:Popup 类 不需要我们自己额外去写一个弹窗类,微软自己有一个Popup 弹窗类 ...
- POP页面暂时不销毁
摘要:我们经常使用的QQ空间,当我们短时间内两次进入页面的时候,页面是没有重新创建的,不光是缓存的数据,是整个页面都没有变.我们在开发中可能也会有这样的需求.开始的时候,想的思路是这样的:用定时器,将 ...
- 牛客寒假6-B.煤气灶
链接:https://ac.nowcoder.com/acm/contest/332/B 题意: 小j开始打工,准备赚钱买煤气灶. 第一天,小j的工资为n元,之后每天他的工资都比前一天多d元. 已知煤 ...
- 081 Search in Rotated Sorted Array II 搜索旋转排序数组 ||
这是 “搜索旋转排序数组”问题的跟进:如果数组元素允许重复,怎么办?这会影响到程序的时间复杂度吗?会有怎样的影响,为什么?假设按照升序排序的数组在预先未知的某个关键点上旋转.(例如, 0 1 2 4 ...
- 关于yii2自带验证码功能不显示问题
1,验证码不显示: 首先保证你的controler 里面的captcha方法是可访问的,被分配的权限的,这个在rule里面设置. 第二,保证你的PHP GD插件已经被启用, 第三如果这样还是不显示,那 ...
- git reflog查看所有操作记录
git reflog 可以查看所有分支的所有操作记录(包括(包括commit和reset的操作),包括已经被删除的commit记录,git log则不能察看已经删除了的commit记录 具体一个例子, ...
- qq登录,新浪微博登录接口申请过程中遇到的问题
接口申请下来了,开发很容易的,参数传到就可以了.以前就做过这方面的开发,但是申请还是第一次,网上有关这方面的东东不是很多,所以记录一下申请过程. 1,qq登录接口申请 申请地址是:http://con ...
- ios 自定义消息提示框
自定义提示框,3秒钟后自动消失.如上图显示效果. 提示框加载代码: - (void)viewDidLoad { [super viewDidLoad]; //将view背景颜色变更为黄色 self.v ...
- 关于svn提交的时候强制写注释
本文固定链接: http://www.linuxyan.com/linux-service/229.html 转载请注明: admin 2012年09月29日 于 ㄨ销声匿迹.Linux 发表 在sv ...