Django 中orm的第一次举荐
Django
ORM :对象--关系--映射
创建Django准备工作:
1.在数据库创建你需要的数据库
2.在项目models里创建模型(就是python写的类,也可以说是python写的数据库)
class Book(models.Model):
id=models.AutoField(primary_key=True)
title=models.CharField(max_length=32)
state=models.BooleanField()
pub_date=models.DateField()
price=models.DecimalField(max_digits=8,decimal_places=2)
publish=models.CharField(max_length=32)
3.setting配置操作(以前的DATABASES注释掉,拷贝下面代码上去)
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql',
'NAME':'bms', # 要连接的数据库,连接前需要创建好
'USER':'root', # 连接数据库的用户名
'PASSWORD':'', # 连接数据库的密码
'HOST':'127.0.0.1', # 连接主机,默认本级
'PORT':3306 # 端口 默认3306
}
}
4.在项目下__init__里添加下面这段代码:
import pymysql
pymysql.install_as_MySQLdb()
5.以上4步完成之后数据库并没有你的表,我们还得进行数据库的迁移操作,在pycharm终端里直接输入
1.python manage.py makemigrations #进行数据同步操作
2.python manage.py migrate #进行python写的数据库编译成sql语句
5.5 注意!为了确保INSTALLED_APPS中写入我们创建的app名称,我们的检查一下
INSTALLED_APPS = [
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
"book" #这个就是我们的项目数据库中表的名称
]
6.这样,我们就可以创建成功了!前期的准备工作完成!
单表操作:
增
def addbook(request)
方式一:
Book.objects.create(title='python',price=100,publish="苹果出版社",pub_date="2012-12-12")
方式二:
book_obj = Book(title='python',price=100,publish="苹果出版社",pub_date="2012-12-12")
book_obj.save()
return HttpResponse('ok')
删
直接查到你要删除的数据后边直接+delete() 例如:删除掉python数据
ret = Book.objects.filter(title='python').delete() #没有返回值
print(ret)
改
查到你要修改的数据后边+update() 括号里写你要修改的数据,例如:把python价格修改成2000
bookinfo= Book.object.filter(title='python')update(price=2000)
print(bookinfo)
查
1.all() 查询所有
ret = Book.objects.all()
print(ret)
2.filter() 按照查询匹配的对象
ret = Book.objects.filter(title='python')
print(ret)
3.get() 只能查到只有一个对象的数据,多个对象或者没有则直接报错
ret = Book.objects.get(title='python')
print(ret)
4.exclude() 只要没有比配的都被查出来
ret = Book.objects.exclude(title='python')
print(ret)
5.order_by() 对查询结果进行排序
ret = Book.objects.filter(title='c#').order_by('-price') #c#这本书的排序就是price=200在前面
6.reverse() 对查询结果进行反向排序,ord_by 需要加参数 reverse 则不需要
ret=Book.objects.all().order_by('price').reverse()
print(ret)
7.first()
ret = Book.objects.filter(title='python').last()
print(ret)
8.last()
ret = Book.objects.filter(title='python').last()
print(ret)
9.count() 数数
ret = Book.objects.filter(title='python').count()
print(ret)
10.exists() 如果jueryset 里有值就返回 True
ret = Book.objects.exists()
print(ret)
11.values()返回的是一个queryset对象,里边是字典方式存储 [{'title': '四有青年'}, {'title': 'python'}...]
ret = Book.objects.all().values('title')
print(ret)
12.values_list 返回的是一个queryset对象,里边是元组形式存储 [('四有青年',), ('python',)...]
ret = Book.objects.all().values_list('title')
print(ret)
13.distinct 从返回的数据中除掉重复的数据<QuerySet [('中国青年报',), ('人民出版社',), ('人民日报',)]>
ret = Book.objects.all().values_list('publish').distinct()
print(ret)
模糊查询
1.price__in=[100,124,200,300] 在这里的都能被查到
ret = Book.objects.filter(price__in=[100,124,200,300])
print(ret)
2.price__gt=200 大于价格200的书籍
ret = Book.objects.filter(price__gt=200)
print(ret)
3.price__gt=200 小于价格200的书籍
ret = Book.objects.filter(price__lt=200)
print(ret)
4.price__range=[100,500] 价格在100--500之间的书籍
ret = Book.objects.filter(price__range=[100, 500])
print(ret)
5.title__contains='python' 查看python的书籍
ret = Book.objects.filter(title__contains='java')
print(ret)
6.
ret = Book.objects.filter(title__icontains='python')
print(ret)
7. 按照年查询 查询2018年10月份的书
ret = Book.objects.filter(pub_date__year=2018,pub_date__month=10)
print(ret)
Django 中orm的第一次举荐的更多相关文章
- Django中ORM介绍和字段及其参数
ORM介绍 ORM概念 对象关系映射(Object Relational Mapping,简称ORM)模式是一种为了解决面向对象与关系数据库存在的互不匹配的现象的技术. 简单的说,ORM是通过使用描述 ...
- Django中ORM实际应用
1. Django中ORM的使用 1. 手动新建一个数据库 2. 告诉Django连接哪个数据库 settings.py里面配置数据库连接信息: # 数据库相关的配置项 DATABASES = { ' ...
- Django中ORM介绍和字段及字段参数 Object Relational Mapping(ORM)
Django中ORM介绍和字段及字段参数 Object Relational Mapping(ORM) ORM介绍 ORM概念 对象关系映射(Object Relational Mapping,简 ...
- Django 中ORM 的使用
一:Django 中 orm 的使用 1:手动新建一个数据库 2 :告诉Django连接哪个数据库 settings.py里配置数据库连接信息: #数据库相关的配置项 DATABASES ={ 'de ...
- Django中ORM的聚合索引
Django中ORM的聚合索引 在Django中,聚合函数是通过aggregate方法实现的,aggregate方法返回的结果是一个字典 在使用时需要先导入模块from django.db.mod ...
- 关于Django中ORM数据库迁移的配置
Django中ORM数据库迁移配置 1,若想将模型转为mysql数据库中的表,需要在settings中配置: DATABASES = { 'default': { 'ENGINE': 'django. ...
- Django中ORM的使用
Django中ORM的使用 ORM orm(object-relation-mapping)对象关系映射,即用对象来表示关系数据库中的表: 类 --> 表, 对象-->一行数据 对象的属性 ...
- Django中ORM创建表关系
一:django中ORM创建表关系 ORM创建外键关系 1.表与表之间的关系 1.表与表之间的关系 一对多 一对一 多对多 2.操作目标条件: 图书表 出版社表 作者表 作者详情表 3.外键关联 一对 ...
- Django中ORM对数据库的增删改查
Django中ORM对数据库数据的增删改查 模板语言 {% for line in press %} {% line.name %} {% endfor %} {% if 条件 %}{% else % ...
随机推荐
- WordCount 优化版测试小程序实现
Stage1:代码编写+单元测试 Github地址: https://github.com/245553473/wcPro.git PSP表格: PSP PSP阶段 预估耗时(分钟) 实际耗时(分钟) ...
- 《Effective Java》第4章 类和接口
第13条:使类和成员的可访问性最小化 第一规则很简单:尽可能地使每个类或者成员不被外界访问.换句话说.应该使用与你正在编写的软件的对应功能相一致的.尽可能最小的访问级别. 对于顶层的(非嵌套的)类和接 ...
- Java多线程并发学习-进阶大纲
1.synchronized 的实现原理以及锁优化? 2.volatile 的实现原理? 3.Java 的信号灯? 4.synchronized 在静态方法和普通方法的区别? 5.怎么实现所有线程在等 ...
- js/jq基础(日常整理记录)-3-一个自定义表格
一.一个自定义的表格 这个js是我刚工作的时候,我们老大让我做一个功能,我觉得html自带的table功能单一,没有分页和排序功能,所有就尝试着做一下,所以这个东西就出来了.很久没写博客了,贴出来吧, ...
- Zinterstore 命令
先来看一下这个命令的定义: Redis Zinterstore 命令计算给定的一个或多个有序集的交集,其中给定 key 的数量必须以 numkeys 参数指定,并将该交集(结果集)储存到 destin ...
- CefSharp使用一
一.使用NuGet搜索CefSharp然后下载CefSharp.WinForms和CefSharp.Common 二.引用CefSharp.Windows,CefSharp,CefSharp三个dll ...
- 【阿圆实验】Alertmanager HA 高可用配置
注意:没有使用supervisor进程管理器的,只参考配置,忽略和supervisor相关命令.并且alertmanager的版本不得低于0.15.2,低版本alert不支持集群配置. 一.alert ...
- CF1076C Meme Problem 数学
Try guessing the statement from this picture: You are given a non-negative integer d . You have to f ...
- paramiko模块的安装和使用(含上传本地文件或文件夹到服务器,以及下载服务器文件到本地)
安装和使用分两步介绍: 介绍一下,本文的运行环境是win7 64位 和python 2.7 . 安装: WIN7_64位 安装python-ssh访问模块(paramiko)的安装教程,本人亲测下面 ...
- 321B
MCMF必须是满足流量最大为前提下的最小费用流(这里是最大费用流) 因此还必须不断地枚举m的流量才行 #include<iostream> #include<algorithm> ...