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的第一次举荐的更多相关文章

  1. Django中ORM介绍和字段及其参数

    ORM介绍 ORM概念 对象关系映射(Object Relational Mapping,简称ORM)模式是一种为了解决面向对象与关系数据库存在的互不匹配的现象的技术. 简单的说,ORM是通过使用描述 ...

  2. Django中ORM实际应用

    1. Django中ORM的使用 1. 手动新建一个数据库 2. 告诉Django连接哪个数据库 settings.py里面配置数据库连接信息: # 数据库相关的配置项 DATABASES = { ' ...

  3. Django中ORM介绍和字段及字段参数 Object Relational Mapping(ORM)

    Django中ORM介绍和字段及字段参数   Object Relational Mapping(ORM) ORM介绍 ORM概念 对象关系映射(Object Relational Mapping,简 ...

  4. Django 中ORM 的使用

    一:Django 中 orm 的使用 1:手动新建一个数据库 2 :告诉Django连接哪个数据库 settings.py里配置数据库连接信息: #数据库相关的配置项 DATABASES ={ 'de ...

  5. Django中ORM的聚合索引

    Django中ORM的聚合索引   在Django中,聚合函数是通过aggregate方法实现的,aggregate方法返回的结果是一个字典 在使用时需要先导入模块from django.db.mod ...

  6. 关于Django中ORM数据库迁移的配置

    Django中ORM数据库迁移配置 1,若想将模型转为mysql数据库中的表,需要在settings中配置: DATABASES = { 'default': { 'ENGINE': 'django. ...

  7. Django中ORM的使用

    Django中ORM的使用 ORM orm(object-relation-mapping)对象关系映射,即用对象来表示关系数据库中的表: 类 --> 表, 对象-->一行数据 对象的属性 ...

  8. Django中ORM创建表关系

    一:django中ORM创建表关系 ORM创建外键关系 1.表与表之间的关系 1.表与表之间的关系 一对多 一对一 多对多 2.操作目标条件: 图书表 出版社表 作者表 作者详情表 3.外键关联 一对 ...

  9. Django中ORM对数据库的增删改查

    Django中ORM对数据库数据的增删改查 模板语言 {% for line in press %} {% line.name %} {% endfor %} {% if 条件 %}{% else % ...

随机推荐

  1. scala中同步块

    private def initializeIfNecessary() { if (!Logging.initialized) { Logging.initLock.synchronized { if ...

  2. PHP 查看扩展信息的命令

    PHP 查看扩展信息的命令 这里以查看 Swoole 扩展信息为例. root@639ca1f15214:~# php --ri swoole // php --ri [扩展名称] swoole sw ...

  3. python常见的加密解密

    #!/usr/bin/env python ''' Python Crypto Wrapper - By Chase Schultz Currently Supports: AES-256, RSA ...

  4. Referenced file contains errors (http://www.springframework.org/schema/beans/spring-beans-3.1.xsd)

    解决方法: 将 Preferences > XML > XML Files > Validation中"Honour all XML schema locations&qu ...

  5. UIPageViewController

    前言 iPhone 和 iPad 都是通过页控件来展示多个桌面,很多 App 在第一次使用时也会使用页控件来介绍自己的功能,页控件的交互效果非常好,适用于把几个简单的页面充分展示出来. 1.UIPag ...

  6. 数据库 first

    数据库原理 .SQL(DDL.DML) 字符串操作 .数值操作 .日期操作 .空值操作 SQL(基础查询) .SQL(关联查询) SQL(高级查询)  子查询 视图.序列.索引 .约束

  7. sqlplus能登录但查询数据报ORA-00942: 表或视图不存在

    在表名前加表所属的用户就能查了: SELECT * FROM ABC.TABLENAME;(ABC是表的OWNER)

  8. Shell脚本标准

    #!/bin/bash #Usage: # ./shell.sh dbname user passwd #----------------------------------------------- ...

  9. luogu4240 毒瘤之神的考验(毒瘤乌斯反演)

    link 题意:求出\(\sum_{i=1}^n\sum_{j=1}^m\varphi(ij)\),对998244353取模 多组数据,\(T\le 10^4,n,m\le 10^5\). 前置知识: ...

  10. 树的遍历顺序 - dfs序|欧拉序|dfn序(备忘)

    (仅作备忘) dfs序是dfs过程中对于某节点进入这个节点的子树和离开子树的顺序 满足每个节点都会在dfs序上出现恰好两次 任意子树的dfs序都是连续的 欧拉序是dfs过程中经过节点的顺序 每个节点至 ...