54 Django 模型层(1) 单表查询
单表操作:
一 项目的操作顺序:
1 在model.py文件中创建表结构
class Book(models.Model):
id=models.AutoField(primary_key=True)
title=models.CharField(max_length=32)
price=models.DecimalField(max_digits=5,decimal_places=2)
publish=models.CharField(max_length=32)
pub_date=models.DateTimeField() 2 连接数据库创建表
(1)先创建数据库bms
(2)配置
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql',
'NAME':'bms', # 要连接的数据库,连接前需要创建好
'USER':'root', # 连接数据库的用户名
'PASSWORD':'', # 连接数据库的密码
'HOST':'127.0.0.1', # 连接主机,默认本级
'PORT':3306 # 端口 默认3306
}
}
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql',
'NAME': 'bms',# 要连接的数据库,连接前需要创建好
'USER': 'root',# 连接数据库的用户名
'PASSWORD': '',# 连接数据库的密码
'HOST': '127.0.0.1', # 连接主机,默认本级
'PORT':3306# 端口 默认3306
},
'app1': {
'ENGINE': 'django.db.backends.mysql',
'NAME': 'bms',# 要连接的数据库,连接前需要创建好
'USER': 'root',# 连接数据库的用户名
'PASSWORD': '',# 连接数据库的密码
'HOST': '127.0.0.1', # 连接主机,默认本级
'PORT':3306# 端口 默认3306
},
'app2': {
'ENGINE': 'django.db.backends.mysql',
'NAME': 'bms',# 要连接的数据库,连接前需要创建好
'USER': 'root',# 连接数据库的用户名
'PASSWORD': '',# 连接数据库的密码
'HOST': '127.0.0.1', # 连接主机,默认本级
'PORT':3306# 端口 默认3306
}
}
不同app 可以配置不同的数据库
(3)数据库迁移
python manage.py makemigrations
python manage.py migrate
KEY: Django在执行迁移命令时只会为settings中install_app中的应用中的models创建表结构
3 启动项目: python manage.py runserver
二 表记录操作
(1) 添加记录
# 方式1
book=Book(title="",price="",publish="",pub_date="2012-12-12")
book.save()
# 方式2
book=Book.objects.create(title="",price="",publish="",pub_date="2012-12-12")
print(book.id)
print(book.title)
(2) 查询记录
KEY:queryset数据类型
Book.objects.all() # 返回queryset对象 [obj,obj2,obj3,...]
Book.objects.all()first() # Book模型类对象
Book.objects.all().last() # Book模型类对象
Book.objects.filter(title="python") # 返回queryset对象 [obj,obj2,obj3,...]
Book.objects.get(title="python") # Book模型类对象
Book.objects.exclude(title="python") # 返回queryset对象 [obj,obj2,obj3,...]
Book.objects.all().count() # 返回int
Book.objects.all().order_by("-price")# 返回queryset对象
Book.objects.all().order_by("-price").reverse() # 返回queryset对象
Book.objects.all().exist() # 返回布尔值
Book.objects.all().values("title") # 返回queryset对象 [{"title":""},{"title":""}]
Book.objects.all().values_list("title","price") # 返回queryset对象 [("python",122),("linux",233)]
Book.objects.all().values("price").distinct()
模糊查询:
Book.objects.filter(price__gt=100)
Book.objects.filter(price__lt=100)
Book.objects.filter(price__in=[100,200,300])
Book.objects.filter(price__range=[100,200])
Book.objects.filter(title__startswith="py")
Book.objects.filter(title__contains="py")
Book.objects.filter(title__icontains="py")
Book.objects.filter(pub_date__year="2012")
(3) 删除
Book.objects.all().delete()
Book.objects.get(id=1).delete()
(4) 更新
Book.objects.filter(id__gt=5).update(price=100)
例子:
1 查询老男孩出版社出版过的价格大于200的书籍
Book.objects.filter(price__gt=200,publish="老男孩出版社")
2 查询2017年8月出版的所有以py开头的书籍名称
Book.objects.filter(title__startswith="py",pub_date__year=2017,pub_date__month=8).values("title")
3 查询价格为50,100或者150的所有书籍名称及其出版社名称
Book.objects.filter(price__in=[50,100,150]).values("title","publish")
4 查询价格在100到200之间的所有书籍名称及其价格
Book.objects.filter(price__range=[100,200]).values("title","price")
5 查询所有人民出版社出版的书籍的价格(从高到低排序,去重)
Book.objects.filter(publish="人民出版社").order_by("-price").values("price").distinct()
单表查询连接数据库具体步骤:
1.创建表,在app model.py文件中,创建

2.数据库中,先创建好库,命名为bms

3.配置settings

4.确保配置文件中已经配置好了自己的应用

5.app 应用中,__init__.py 文件中加上:
import pymysql
pymysql.install_as_MySQLdb()python manage.py makemigrations
python manage.py migrate

54 Django 模型层(1) 单表查询的更多相关文章
- Django模型层之单表操作
Django模型层之单表操作 一 .ORM简介 我们在使用Django框架开发web应用的过程中,不可避免地会涉及到数据的管理操作(如增.删.改.查),而一旦谈到数据的管理操作,就需要用到数据库管理软 ...
- day 69 Django基础五之django模型层(一)单表操作
Django基础五之django模型层(一)单表操作 本节目录 一 ORM简介 二 单表操作 三 章节作业 四 xxx 一 ORM简介 MVC或者MVC框架中包括一个重要的部分,就是ORM,它实现 ...
- day 55 Django基础五之django模型层(一)单表操作
Django基础五之django模型层(一)单表操作 本节目录 一 ORM简介 二 单表操作 三 章节作业 四 xxx 一 ORM简介 MVC或者MVC框架中包括一个重要的部分,就是ORM,它 ...
- Django框架之第六篇(模型层)--单表查询和必知必会13条、单表查询之双下划线、Django ORM常用字段和参数、关系字段
单表查询 补充一个知识点:在models.py建表是 create_time = models.DateField() 关键字参数: 1.auto_now:每次操作数据,都会自动刷新当前操作的时间 2 ...
- Django模型层:单表操作,多表操作,常用(非常用)字段和参数,Django-model进阶
一.web应用 二.模板的导入与继承 三.静态文件相关 四.inclusion_tag:返回html片段 五.模型层 一.web应用 -s包括两个部分:web服务器+application -目前阶段 ...
- Django模型层:多表查询
一 创建模型 实例:我们来假定下面这些概念,字段和关系 作者模型:一个作者有姓名和年龄. 作者详细模型:把作者的详情放到详情表,包含生日,手机号,家庭住址等信息.作者详情模型和作者模型之间是一对一的关 ...
- Django基础五之django模型层(一)单表操作
一 ORM简介 MVC或者MVC框架中包括一个重要的部分,就是ORM,它实现了数据模型与数据库的解耦,即数据模型的设计不需要依赖于特定的数据库,通过简单的配置就可以轻松更换数据库,这极大的减轻了开发人 ...
- django模型层 关于单表的增删改查
关于ORM MTV或者MVC框架中包括一个重要的部分,就是ORM,它实现了数据模型与数据库的解耦,即数据模型的设计不需要依赖于特定的数据库, 通过简单的配置就可以轻松更换数据库,这极大的减轻了开发人员 ...
- 05.Django基础五之django模型层(一)单表操作
一 ORM简介 MVC或者MVC框架中包括一个重要的部分,就是ORM,它实现了数据模型与数据库的解耦,即数据模型的设计不需要依赖于特定的数据库,通过简单的配置就可以轻松更换数据库,这极大的减轻了开发人 ...
- django——模型层之单表
1.ORM简介 MVC或者MVC框架中包括一个重要的部分,就是ORM,它实现了数据模型与数据库的解耦,即数据模型的设计不需要依赖于特定的数据库,通过简单的配置就可以轻松更换数据库,这极大的减轻了开发人 ...
随机推荐
- 浅谈class私有变量
class 的前世今生 在 es6 之前,虽然 JS 和 Java 同样都是 OOP (面向对象)语言,但是在 JS 中,只有对象而没有类的概念. 在 JS 中,生成实例对象的传统方法是通过构造函数, ...
- python之路----进程(一)
一.理论知识1.操作系统发展简介 1.没有操作系统 —— 穿孔卡片 2.批处理系统 —— 串行 ,速度块 联机批处理 读磁带的时候速度快 脱机批处理 读磁带和cpu工作并发 3.多道程序系统 —— 并 ...
- String和StringBuffer和StringBuilder
String类 Java语言中用String类代表不可变的字符串,它是由任意多个字符组成的序列.程序中需要存储大量的信息时,一般都用String对象. 1.字符串初始化 JavaSE API为字符串对 ...
- java异常复习
如果有时学东西概念太多了,可以反着学,从结果到过程,从代码到概念,也许就不会那么枯燥了,比如学反射的时候. java异常复习 异常和错误的区别? 异常:程序或环境本身出现错误.(程序员可以捕获并处理) ...
- Centos文件切割利器_split命令及cat命令合并文件
有个文件要处理,因为很大,所以想把它切成若干份,每份N行,以便并行处理.split命令可以将一个大文件分割成很多个小文件,有时需要将文件分割成更小的片段,为提高可读性,生成日志等 命令格式 -b:值为 ...
- VIM 使用心得
序 到百度外卖任职以后,发现在我们部门无论 mac 还是 windows,程序员们清一色地都在使用 VIM 来编辑代码,期间穿插着各种插件.快捷键.眼花缭乱的命令.我在大学时只会极少的 VIM 命令, ...
- 在一个activity中销毁指定activity
通过静态变量的方法: 1.在Aactivity中设置一个Activity静态变量 static Activity activity; 2.在onCreate中: activity=this: 3.在B ...
- redhat7 防火墙设置
查看防火墙的状态# firewall-cmd --staterunning # systemctl stop firewalld //关闭防火墙服务# systemctl start firewa ...
- 51nod 1051 最大子矩阵和
没想到居然可以O(n3)暴力过 就是大概之前的 最大连续子序列和 加成2维度了 枚举起始列 和 终止列 然后计算从1到n行最大的子矩阵的和 注意n 和 m 的输入顺序!! #include< ...
- springboot中配置主从redis
测试redis的主从配置 redis实例 文件夹名称如下 redis_master_s redis_slaver1_s redis_slaver2_s redis.conf文件 master的redi ...