六、Django模型基础第一节
1 数据库的连接配置
django 连接mysql的配置流程:
安装 pymysql pip install pymysql
创建数据库用户
create user 'xiangnan'@'%' identified by '';
grant all on *.* to 'xiangnan'@'%';
flush privileges;
创建数据库
CREATE DATABASE IF NOT EXISTS crm;
在settings.py中修改配置
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql',
'NAME': 'crm', # 数据库名
'USER': 'xiangnan',
'PASSWORD': '',
'HOST': '127.0.0.1',
'PORT': '',
}
}
修改项目文件夹(和settings.py文件所在的目录)下
__init__.py文件 写上:
import pymysql pymysql.install_as_MySQLdb()
6. 设置时区 TIME_ZONE = 'Asia/ShangHai' # 北京时间
2 Django的ORM系统
-对象关系映射(Object Relational Mapping,简称ORM)!
-简单的说就是用面向对象的方式,描述数据库,操作数据库,达到不用编写SQL语句就能对数据库进行增删改查。

3 模型的创建与激活
3.1 Django模型映射关系

模型类必须都写在app下的models.py文件中。
模型如果需要映射到数据库,所在的app必须已注册.
一个数据表对应一个模型类,表中的字段,对应模型中的类属性.
3.2 创建模型
每一个模型都是django.db.models.Model的子类
from django.db import models # Create your models here.
class Student(models.Model):
name = models.CharField(max_length=20)
age = models.SmallIntegerField(default=0)
sex = models.SmallIntegerField(default=1)
qq = models.CharField(max_length=20, default='')
phone = models.CharField(max_length=20, default='')
c_time = models.DateTimeField(verbose_name='创建时间', auto_now_add=True) def __str__(self):
return 'id=%s,name=%s,age=%s,c_time-%s' % (self.age, self.name, self.age, self.c_time)
3.3 激活模型
在项目中注册app
运行数据库迁移命令(一定要在项目根目录下) 执行以上命令创建映射文件,告诉django,我们要做哪些数据库的更改
python mange.py makemigrations teacher
命令后面可以跟app名称,表示指定对某个app的模型进行映射,没写则所有的app都执行.
迁移 sqlmigrate 从迁移获取sql语句
-- Create model Student CREATE TABLE teacher_student (
id integer AUTO_INCREMENT NOT NULL PRIMARY KEY,
name varchar(20) NOT NULL,
age smallint NOT NULL,
sex smallint NOT NULL,
qq varchar(20) NOT NULL,
phone varchar(20) NOT NULL,
c_time datetime(6) NOT NULL);
COMMIT;
3. 运行migrate命令,使迁移生效
python manage.py migrate
执行以上命令,将映射文件中的映射数据提交到数据库中
打开数据库我们能看到创建的以app名_模型名的数据表,而其他的一些表格是django自动生成的.
mysql> desc teacher_student;
+--------+-------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+--------+-------------+------+-----+---------+----------------+
| id | int(11) | NO | PRI | NULL | auto_increment |
| name | varchar(20) | NO | | NULL | |
| age | smallint(6) | NO | | NULL | |
| sex | smallint(6) | NO | | NULL | |
| qq | varchar(20) | NO | | NULL | |
| phone | varchar(20) | NO | | NULL | |
| c_time | datetime(6) | NO | | NULL | |
+--------+-------------+------+-----+---------+----------------+
7 rows in set (0.00 sec)
注意:如果要删除表,那么可以去django模型中注释掉模型类,然后执行映射的命令,不要手动在命令行里面去删除.
4 数据的增删改查
工具 djang shell 调试工具
python manage.py shell
增
# 增-1
laoda = Student(name='laoda', age=18)
laoda.save()
# 增-2
laoer = Student()
laoer.name = 'laoer'
laoer.age = 17
laoer.save()
# 增-3
Student.objects.create(name='laosan', age=16)
# 增-4
Student.objects.get_or_create(name='laosi', age=15)
- 查
# 查询所有记录对象
rs = Student.objects.all()
# 查询一个记录对象
rs = Student.objects.get(id=1)
# 获取满足条件的对象
rs = Student.objects.filter(sex=1)
all()和filter()方法返回的是QuerySet对象
get()方式返回的是单个对象,如果符合条件的对象有多个,则get报错
1.从数据库中查询出来的结果一般是一个集合,这个集合叫做 QuerySet.
2.QuerySet是可迭代对象.
3.QuerySet支持切片, 不支持负索引.
4.可以用list强行将QuerySet变成列表.
- 改
# 改-1
rs = Student.objects.get(name='laoda')
rs.name = 'xiaoming'
rs.save()
# 改-2
Student.objects.filter(name='xiaoming').update(sex=0)
# 改-3
Student.objects.all().update(sex=1)
- 删
Student.objects.get(id=1).delete()
Student.objects.filter(sex=0).delete()
Student.objects.all().delete()
5 总结

六、Django模型基础第一节的更多相关文章
- Django 学习第六天——Django模型基础第一节
一.Django 的 ORM 简介: Django的ORM系统的分析: 1.ORM 概念:对象关系映射(Object Relational Mapping,简称ORM) 2.ORM的优势:不用直接编写 ...
- 七、Django模型基础第二节——常用查询
1 常用的模型字段类型 官方文档链接: https://docs.djangoproject.com/en/2.1/ref/models/fields/#field-types 常用的字段类型 模型字 ...
- Django 学习第七天——Django模型基础第二节
User 是自己创建的模型类,等于数据库中的表 常用的查询方法: all():获取所有数据: User.objects.all() first():获取第一条数据: User.objects.firs ...
- 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模型映射关系 #模型类-----数据表 #类属性-----表字 ...
- Java基础第一节.Java简介
第一节 Java简介 Java是一个由Sun公司开发而成的新一代的编程语言. Java语言是对软件开发有深远影响.应用前景广泛.具有丰富的类库.继承了C++的传统(摈弃了某些不足)广泛使用的网络编程语 ...
- django模型基础(三)
本文转载自https://blog.csdn.net/xiaogeldx/article/details/88084034 表关系 一对一(OneToOne) 通过本表的主键外键关联另一张表的主键 创 ...
- Django 学习第八天——Django模型基础第三节
一.表关系的实现: 一对一:OneToOne(外键+唯一键) xxx = models.OneToOneField('关联的表',on_delete=models.CASCADE) 外键和一对一关系的 ...
随机推荐
- 学习笔记------------解决margin塌陷
首先来解释一下什么是marg塌陷? 父子嵌套元素垂直方向的margin,父子元素是结合在一起的,他们两个会取其中最大的值 正常情况下应该是父级元素相对于浏览器定位,而子级元素相对于父级元素定位 但是m ...
- 【Alpha】事后分析
Alpha阶段终于告一段落,我们的团队也完整经历了从提出设想.用户需求分析,到开发.测试,再到部署上线.推广的流程."葫芦娃不想写代码"团队还是较出色地完成了Alpha阶段的工作, ...
- 基于服务器AAA的实验
1.实验拓扑 2.地址分配 Device Interface IP Address Subnet Mask R0 Fa0/0 192.168.1.2 255.255.255.0 S ...
- swiper使用中一些点的总结
最近做了PC端改版,要求移动端有更好的体验,一些产品滚屏的展示,就用了swiper插件,以方便用户在移动端访问可以滑动翻屏展示. 本次项目中使用的是swiper2.0版本. 首先要引入swiper的j ...
- egret 添加帧动画
private showEffect(): void { //加载本地的帧动画资源 RES.getResByUrlNoCache("resource/assets/shenqi_eff.js ...
- centos7初上手3-安装apache服务
前两篇学习安装了mysql服务器,tomcat服务,这篇文章学习安装apache服务 1.执行yum install httpd,安装完成后查看httpd rpm -qa|grep httpd 2.新 ...
- SSH整合后tomcat启动报错SEVERE: Exception starting filter struts2 java.lang.NoClassDefFoundError: org/objectweb/asm/ClassVisitor
错误信息: SEVERE: Exception starting filter struts2 java.lang.NoClassDefFoundError: org/objectweb/asm/C ...
- ffmpeg使用示例
/* 视频格式转换 ffmpeg -i "F:\Test\1.mp4" -y -vcodec copy -acodec copy "F:\Test\11.avi" ...
- node.js学习6---第三方依赖(模块或者说是包)的导入 npm 以及 cnpm命令的使用
npm命令用于导入node.js的第三方包,相当于java中使用maven来导入第三方依赖: 1.npm init -y 命令:在命令窗口中执行后,会出现如下的json文件: 右边记录了安装的第三方包 ...
- windows分驱
步骤/方法 1 鼠标右击“计算机” 2 选择“管理”标签 3 打开“计算机管理”窗口 选择“磁盘“>>”存储管理“,打开”磁盘管理“页面 如图: 右键单击选择要压缩的磁盘(本例 ...