单表操作:

一 项目的操作顺序:
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()
6.执行
python manage.py makemigrations

python manage.py migrate
7.可能出现的问题和解决办法

54 Django 模型层(1) 单表查询的更多相关文章

  1. Django模型层之单表操作

    Django模型层之单表操作 一 .ORM简介 我们在使用Django框架开发web应用的过程中,不可避免地会涉及到数据的管理操作(如增.删.改.查),而一旦谈到数据的管理操作,就需要用到数据库管理软 ...

  2. day 69 Django基础五之django模型层(一)单表操作

    Django基础五之django模型层(一)单表操作   本节目录 一 ORM简介 二 单表操作 三 章节作业 四 xxx 一 ORM简介 MVC或者MVC框架中包括一个重要的部分,就是ORM,它实现 ...

  3. day 55 Django基础五之django模型层(一)单表操作

      Django基础五之django模型层(一)单表操作   本节目录 一 ORM简介 二 单表操作 三 章节作业 四 xxx 一 ORM简介 MVC或者MVC框架中包括一个重要的部分,就是ORM,它 ...

  4. Django框架之第六篇(模型层)--单表查询和必知必会13条、单表查询之双下划线、Django ORM常用字段和参数、关系字段

    单表查询 补充一个知识点:在models.py建表是 create_time = models.DateField() 关键字参数: 1.auto_now:每次操作数据,都会自动刷新当前操作的时间 2 ...

  5. Django模型层:单表操作,多表操作,常用(非常用)字段和参数,Django-model进阶

    一.web应用 二.模板的导入与继承 三.静态文件相关 四.inclusion_tag:返回html片段 五.模型层 一.web应用 -s包括两个部分:web服务器+application -目前阶段 ...

  6. Django模型层:多表查询

    一 创建模型 实例:我们来假定下面这些概念,字段和关系 作者模型:一个作者有姓名和年龄. 作者详细模型:把作者的详情放到详情表,包含生日,手机号,家庭住址等信息.作者详情模型和作者模型之间是一对一的关 ...

  7. Django基础五之django模型层(一)单表操作

    一 ORM简介 MVC或者MVC框架中包括一个重要的部分,就是ORM,它实现了数据模型与数据库的解耦,即数据模型的设计不需要依赖于特定的数据库,通过简单的配置就可以轻松更换数据库,这极大的减轻了开发人 ...

  8. django模型层 关于单表的增删改查

    关于ORM MTV或者MVC框架中包括一个重要的部分,就是ORM,它实现了数据模型与数据库的解耦,即数据模型的设计不需要依赖于特定的数据库, 通过简单的配置就可以轻松更换数据库,这极大的减轻了开发人员 ...

  9. 05.Django基础五之django模型层(一)单表操作

    一 ORM简介 MVC或者MVC框架中包括一个重要的部分,就是ORM,它实现了数据模型与数据库的解耦,即数据模型的设计不需要依赖于特定的数据库,通过简单的配置就可以轻松更换数据库,这极大的减轻了开发人 ...

  10. django——模型层之单表

    1.ORM简介 MVC或者MVC框架中包括一个重要的部分,就是ORM,它实现了数据模型与数据库的解耦,即数据模型的设计不需要依赖于特定的数据库,通过简单的配置就可以轻松更换数据库,这极大的减轻了开发人 ...

随机推荐

  1. Linux下DNS服务器配置

    一步:yum install -y bind bind-utils bind-chroot yum install bind* //安装DNS服务 第二步:systemctl stop firewal ...

  2. Google's Machine Learning Crash Course #01# Introducing ML & Framing & Fundamental terminology

    INDEX Introducing ML Framing Fundamental machine learning terminology Introducing ML What you learn ...

  3. ESOURCE_LOCKED - cannot obtain exclusive access to locked queue '2484_0_00163'

    早上一运维同事说,一个报盘程序启动的时候报了"ESOURCE_LOCKED - cannot obtain exclusive access to locked queue '2484_0_ ...

  4. c++性能之map实现性能比较

    http://www.cnblogs.com/zhjh256/p/6346501.html讲述了基本的map操作,在测试的时候,发现map的性能极为低下,与java相比相差了接近200倍.测试的逻辑如 ...

  5. 02:Django进阶篇

    目录:Django其他篇 01:Django基础篇 02:Django进阶篇 03:Django数据库操作--->Model 04: Form 验证用户数据 & 生成html 05:Mo ...

  6. 20145301赵嘉鑫 《网络对抗》Exp9 Web安全基础实践

    20145301赵嘉鑫 <网络对抗>Exp9 Web安全基础实践 实验后回答问题 (1)SQL注入攻击原理,如何防御 SQL注入攻击原理:SQL 是一门 ANSI 的标准计算机语言,用来访 ...

  7. noip2010 真题练习 2017.2.18

    第一题比较简单,用exist数组判断是否在循环队列中,就可实现线性算法. Code #include<iostream> #include<cstdio> #include&l ...

  8. WideCharToMultiByte和MultiByteToWideChar函数的用法(转载)

    出处:http://www.cnblogs.com/gakusei/articles/1585211.html 为了支持Unicode编码,需要多字节与宽字节之间的相互转换.这两个系统函数在使用时需要 ...

  9. 在terminal下的快捷键

    1.回到行首的快捷键:ctrl + esc 2.ctrl+[可以替代esc

  10. shell:遍历目录和子目录的所有文件及匹配文件内容到日志

    过滤文件内网 #!/bin/bash function getdir(){ ` do dir_or_file=$"/"$element if [ -d $dir_or_file ] ...