1006.Django模型基础01
一、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的更多相关文章
- Django 08 Django模型基础3(关系表的数据操作、表关联对象的访问、多表查询、聚合、分组、F、Q查询)
Django 08 Django模型基础3(关系表的数据操作.表关联对象的访问.多表查询.聚合.分组.F.Q查询) 一.关系表的数据操作 #为了能方便学习,我们进入项目的idle中去执行我们的操作,通 ...
- Django 07 Django模型基础2 (常用查询和多表关联)
Django 07 Django模型基础2 (常用查询和多表关联) 一.常用查询 #查找数据 def search_user(request): #获取 rs = User.objects.first ...
- Django 06 Django模型基础1(ORM简介、数据库连接配置、模型的创建与映射、数据的增删改查)
Django 06 Django模型基础1(ORM简介.数据库连接配置.模型的创建与映射.数据的增删改查) 一.ORM系统 #django模型映射关系 #模型类-----数据表 #类属性-----表字 ...
- 六、Django模型基础第一节
1 数据库的连接配置 django 连接mysql的配置流程: 安装 pymysql pip install pymysql 创建数据库用户 '; grant all on *.* to 'xiang ...
- Django 学习第六天——Django模型基础第一节
一.Django 的 ORM 简介: Django的ORM系统的分析: 1.ORM 概念:对象关系映射(Object Relational Mapping,简称ORM) 2.ORM的优势:不用直接编写 ...
- 九.django模型基础(三)之关联对象操作及多表查询
Ⅰ.关系表的数据操作 1.正向 正向:如果一个模型有外键字段,通过这个模型对外键进行操作叫做正向. 1)更新(增) a.通过属性复制 b.通过主键的方式 总结: ForeignKey 字段的更新,跟普 ...
- 七、Django模型基础第二节——常用查询
1 常用的模型字段类型 官方文档链接: https://docs.djangoproject.com/en/2.1/ref/models/fields/#field-types 常用的字段类型 模型字 ...
- django模型基础(三)
本文转载自https://blog.csdn.net/xiaogeldx/article/details/88084034 表关系 一对一(OneToOne) 通过本表的主键外键关联另一张表的主键 创 ...
- Django 学习第八天——Django模型基础第三节
一.表关系的实现: 一对一:OneToOne(外键+唯一键) xxx = models.OneToOneField('关联的表',on_delete=models.CASCADE) 外键和一对一关系的 ...
- Django 学习第七天——Django模型基础第二节
User 是自己创建的模型类,等于数据库中的表 常用的查询方法: all():获取所有数据: User.objects.all() first():获取第一条数据: User.objects.firs ...
随机推荐
- 【PyCharm】PyCharm设置深色背景
操作步骤 1.依次点击File->Settings->Appearance&Behavior->Appearance 2.选择Theme为Darcula
- springBoot中对mongodb添加2dsphere位置索引
项目需求:最近有个需求,就是要根据坐标位置找出附近的车辆(车辆有对应的坐标).然后翻了翻百度,cv流一顿操作之后,大概整理出来了一段代码如下 //根据当前位置坐标,找出附近*米内的所有车辆BasicD ...
- 嵌入式Qt中实现串口读取的事件驱动方法
在嵌入式Linux系统的UI设计中,比较常见的是使用Qt库来实现.而在Qt中进行程序设计时,也经常会用到串口(UART)通信.现在基于Qt5.1以上的版本中,集成有串口模块(如QSerialPort) ...
- python爬取知乎的网站内容
#获取知乎的网站内容 import requests #数据请求模块 第三方模块 pip install requests import re #正则表达式 #网页head头 heads = { 'U ...
- Ubuntu 20.04 部署Prmoetheus+grafana+mysql+mysqld_exporter+node_exporter
Prometheus简介 Prometheus是一个功能强大的开源监控系统,可从您的服务中收集指标并将其存储在时间序列数据库中.它通过Grafana等工具提供多维数据模型,灵活的查询语言和多样化的可视 ...
- Alfred 好用工具分享
好用的mac工具分享 1.带历史记录的剪切板 根据快捷键切换选择保存的数据 2.创建热键工作流程 将常用的工具变为热键,快捷切换 如何创建: 设置热键 单击右键 创建actions 打开app 然后将 ...
- mysql查询锁表和表解锁的操作
转载自:https://www.cnblogs.com/qianxiaoruofeng/p/15542468.html 第一种 1.查询是否锁表 show OPEN TABLES where In_u ...
- 使用Dapr和Tye启动服务
自 2019 年开源以来,Dapr(Distributed Application runtime )已迅速成为非常流行的构建微服务的开源框架.它提供了分布式应用程序中常用的构建块和已打包的服务,例如 ...
- js本地时钟
js本地时钟,如上图所示,秒是跳动的 1 // 本地时钟 2 function clockon() { 3 var now = new Date(); 4 var year = now.getFull ...
- python爬虫实战——自动下载百度图片(文末附源码)
用Python制作一个下载图片神器 前言 这个想法是怎么来的? 很简单,就是不想一张一张的下载图片,嫌太慢. 在很久很久以前,我比较喜欢收集各种动漫的壁纸,作为一个漫迷,自然是能收集多少就收集多少.小 ...