一、Django的ORM简介

1. ORM概念:对象关系映射(Object Relational Mapping);

2. ORM优势:不用直接编写SQL代码,只需像操作对象一样从数据库操作数据。

django模型映射关系

模型类--------> 数据表

类属性--------->表字段名

1. 模型类必须都写在app下的models.py文件中;

2. 模型如果需要映射到数据库,坐在的app唏嘘被安装;

3. 一个数据表对应一个模型类,表中的字段,对应模型中的类属性。

二、数据库连接配置

1. 在settings.py中配置DATABASES

DATABASES = {

  ‘default’: {

    'NEGINE': 'django.db.backends.mysql',    # 数据库引擎

    'NAME': 'mydb',                                         # 数据库名称

    'USER': 'admin',            # 链接数据库的用户名

    'PASSORD': 'qwe123',          # 链接数据库的密码

    'HOST': '127.0.0.1',               # mysql服务器的域名和ip地址

    'PORT': '3306',            # mysql的一个端口号,默认是3306

  }

}

创建一个管理员用户liuxinghua账号,密码为qwe123:

CREATE USER 'liuixnghua' @‘%’IDENTIFIED BY 'qwe123‘;

给这个用户授予所有远程访问,这个用户主要用于管理整个数据库,备份,还原等操作。

GRANT ALL ON *,* TO 'liuxinghua'@'%';

使授权立即生效:

FLUSH PRIVILEGES;

2. pymysql数据库连接器的配置:

① 在虚拟环境中安装pymysql:pip install pymysql -i https://pypi.douban.com/simple

② 设置连接器为pymysql:在主目录下的__init__.py文件添加下面语句

  import pymysql 

  pymysql.install_as_MySQLdb()

补充:

create database maqushop; 创建数据库

drop database maqushop; 删除数据库

三、模型的创建与映射

1. 创建模型

在App article中的models.py文件中进行模型定义

from django.db import models

class Article(models.Model):
title = models.CharField(max_length=200, default="")
author = models.CharField(max_length=50, default="")
summary = models.CharField(max_length=1000, default="")
content = models.TextField()

2. 激活模型

注:

在主项目文件下的__init__.py文件中进行pymysql连接器设置

import pymysql
pymysql.install_as_MySQLdb()

① 注册app:在主项目settings.py文件中对INSTALLED_APPS添加app(article)

INSTALLED_APPS = [
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'article',
]

② 生成迁移文件,cmd中在项目文件目录下,输入python manage.py makemigrations  即可创建app article的迁移文件,再次输入python manage.py migrate,即可保存生成的迁移文件使其生效。

python manage.py migrate  # 让全部app迁移生效

python manage.py migrate article # 让article app迁移生效

四、数据的增删改查

准备

1. 打开python交互模式,cmd项目文件目录下输入 python manage.py shell,即可进入python交互模式

1. 第一种

s1 = Student(name='liuxinghua1', age=37, qq=416439533)   #直接实例化进行数据添加

s1.save()   # 进行实例化数据保存

2. 第二种

s2 = Student()

s2.name='liuxinghua2'

s2.age=37

s2.sex=1

s2.qq='416439533'

s2.save()

3. 第三种

Student.object.create(name='liuxinghua3',  age=37, qq=416439533)

4. 第四种

s3 = Student.objects.get_or_create(name='liuxinghua4',  age=37, sex=1, qq=416439533)

1. 在查询之前便于更好识别数据,需要在models.py文件中Student类定义下添加一个函数

def __str__(self):

  return self.name

res = Student.objects.all()

res  或者 print(res.query)

2. 查一条

Student.objects.get(pk=1)   #如符合条件有多条,报错  pk为主键,此处主键为编号

3. 带条件查询

Student.objects.filter(sex=1)

总结:

get拿到是一个对象

all,filter拿到的是查询集,queryset[]

Queryset集合对象:可以用list转成列表,可以迭代,可以切片(不支持负索引)

1. 该单条,通过属性修改

s1 = Student.objects.get(pk=1)    # 首先获取数据

s1.age = 18   # 此次对数据进行修改

s1.save    # 最后对修改数据进行保存

2. 改多条,通过update

Student.objects.filter(name='uxinghua‘.update(age=20)    # 通过刷选修改对应项目的属性数据

Out[17]:2  # 修改数据的条数,表示有两条数据符合刷选并进行了修改

1. delete直接删除

单条删除

s = Student.objects.get(pk=1)   # 首先获取数据

s.delete()   # 直接删除

刷选删除

s = Student.objects.filter(name=‘liuxinghua')   # 首先获取数据

s.delete()   # 直接删除

全部删除

s = Student.objects.all()  # 首先获取数据

s.delete()   # 直接删除

1006.Django模型基础01的更多相关文章

  1. Django 08 Django模型基础3(关系表的数据操作、表关联对象的访问、多表查询、聚合、分组、F、Q查询)

    Django 08 Django模型基础3(关系表的数据操作.表关联对象的访问.多表查询.聚合.分组.F.Q查询) 一.关系表的数据操作 #为了能方便学习,我们进入项目的idle中去执行我们的操作,通 ...

  2. Django 07 Django模型基础2 (常用查询和多表关联)

    Django 07 Django模型基础2 (常用查询和多表关联) 一.常用查询 #查找数据 def search_user(request): #获取 rs = User.objects.first ...

  3. Django 06 Django模型基础1(ORM简介、数据库连接配置、模型的创建与映射、数据的增删改查)

    Django 06 Django模型基础1(ORM简介.数据库连接配置.模型的创建与映射.数据的增删改查) 一.ORM系统 #django模型映射关系 #模型类-----数据表 #类属性-----表字 ...

  4. 六、Django模型基础第一节

    1 数据库的连接配置 django 连接mysql的配置流程: 安装 pymysql pip install pymysql 创建数据库用户 '; grant all on *.* to 'xiang ...

  5. Django 学习第六天——Django模型基础第一节

    一.Django 的 ORM 简介: Django的ORM系统的分析: 1.ORM 概念:对象关系映射(Object Relational Mapping,简称ORM) 2.ORM的优势:不用直接编写 ...

  6. 九.django模型基础(三)之关联对象操作及多表查询

    Ⅰ.关系表的数据操作 1.正向 正向:如果一个模型有外键字段,通过这个模型对外键进行操作叫做正向. 1)更新(增) a.通过属性复制 b.通过主键的方式 总结: ForeignKey 字段的更新,跟普 ...

  7. 七、Django模型基础第二节——常用查询

    1 常用的模型字段类型 官方文档链接: https://docs.djangoproject.com/en/2.1/ref/models/fields/#field-types 常用的字段类型 模型字 ...

  8. django模型基础(三)

    本文转载自https://blog.csdn.net/xiaogeldx/article/details/88084034 表关系 一对一(OneToOne) 通过本表的主键外键关联另一张表的主键 创 ...

  9. Django 学习第八天——Django模型基础第三节

    一.表关系的实现: 一对一:OneToOne(外键+唯一键) xxx = models.OneToOneField('关联的表',on_delete=models.CASCADE) 外键和一对一关系的 ...

  10. Django 学习第七天——Django模型基础第二节

    User 是自己创建的模型类,等于数据库中的表 常用的查询方法: all():获取所有数据: User.objects.all() first():获取第一条数据: User.objects.firs ...

随机推荐

  1. sql 时间

    sql拿两天之内的时间 SELECT * FROM room_message WHERE send_date BETWEEN UNIX_TIMESTAMP( now())-172800 AND now ...

  2. 使用JavaHTTPClient发送请求

    import org.apache.http.Header; import org.apache.http.HttpEntity; import org.apache.http.HttpHeaders ...

  3. css代码中的2个类名连一起写是啥意思?

    <div class="menu-btn closed"> <div class="menu-line"></div> &l ...

  4. Retrofit简要分析

    Retrofit是对网络请求实现了一套请求架构封装,屏蔽底层网络实现,使网络请求像调用本地接口一样 基本使用例子 public interface GitHubService {//定义request ...

  5. RxJava简要分析

    一:RxJava执行流程: RxJava简单使用 private final String tag = getClass().getSimpleName(); //数据源,被观察对象 Observab ...

  6. 2022-04-11内部群每日三题-清辉PMP

    1.项目经理从制造商那里收到一个更新信息,说一个必要的设备修理可能会导致他们的可交付成果迟八周时间.项目经理应该怎么做? A.确定关键路径 B.实施沟通管理计划 C.执行假设情景分析 D.对项目进度赶 ...

  7. HTML实战:个人信息登记表

    效果展示: 代码示例: <!DOCTYPE html> <html lang="en"> <head> <meta charset=&qu ...

  8. ssh-add

    ssh-add -l https://www.jianshu.com/p/0c6719f33fb9 添加秘钥,而不是公钥

  9. Java的学前准备(2021.7.29)

    前言:Emm...已经是编程学习的Day2了(好像Day1不知道哪去了,或许是在考验我的记忆力呢 ).但所幸我依然可继续学习,内容如下. 一.J课程 电脑快捷键 Ctrl+ shift / C/ V/ ...

  10. Spring入门之使用 spring 的 IOC 解决程序耦合(Spring环境搭建)(03-01)

    3.1 案例的前期准备 1.使用的案例是:账户的业务层和持久层的依赖关系解决(就是有两个账户实现转账之类的事情,后期继续用这个案例)2.准备环境:在开始 spring 的配置之前,我们要先准备一下环境 ...