六、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) 外键和一对一关系的 ...
随机推荐
- centos7与centos6命令区别
CentOS 7 vs CentOS 6的不同 (1)桌面系统[CentOS6] GNOME 2.x[CentOS7] GNOME 3.x(GNOME Shell) (2)文件系统[CentOS ...
- linux php5.6 安装Redis扩展
wget http://pecl.php.net/get/redis-4.2.0.tgz tar -zxvf redis-.tgz cd redis- /usr/local/php5./bin/php ...
- 不同版本的IDE ,对应的选项 有变化
xx.dproj对应的项目级选项 也不同,所以,要分别保存为不同的文件. 如果不同的IDE,打开同一个 .dproj文件,会因为 选项界面的选项不同,提示一些错误.
- 使用idea启动springMVC+Hibernate其他项目
打开项目后打开Project Structure 点开左边的Libraries 加入依赖包 点开左边的Moudules 选中项目 新建Web,Spring,Hibernate三项 Hibernate添 ...
- 实训任务05 MapReduce获取成绩表的最高分记录
实训任务05 MapReduce获取成绩表的最高分记录 实训1:统计用户纺问次数 任务描述: 统计用户在2016年度每个自然日的总访问次数.原始数据文件中提供了用户名称与访问日期.这个任务就是要获取 ...
- 几个常用内核函数(《Windows内核情景分析》)
参考:<Windows内核情景分析> 0x01 ObReferenceObjectByHandle 这个函数从句柄得到对应的内核对象,并递增其引用计数. NTSTATUS ObRefer ...
- C# 更新控件四部曲,自定义的用户控件无法更新怎么办
用户控件如果在其他的项目被引用,希望更新控件后,所引用的项目同步更新效果,一开始难免失败,特别是更换了控件所在的文件夹. 这个时候,四部曲来解决控件的更新. 1.运行一下控件的项目,使控件生成一下. ...
- 1. nginx添加自定义http模块(简单)
步骤 1. 新建模块目录2. 添加模块配置文件3. 编写模块源码文件4. 在主配置文件中配置访问location5. 编译加入模块文件6. 测试 新建模块目录 mkdir /opt/nginx/ext ...
- LVM逻辑卷扩容、缩容
LVM就是动态卷管理,可以将多个硬盘和硬盘分区做成一个逻辑卷,并把这个逻辑卷作为一个整体来统一管理,动态对分区进行扩缩空间大小,安全快捷方便管理. 后期出现问题恢复数据也比较麻烦. 概念: ①PE(P ...
- eclipse Android项目 DDMS db文件 导出 Failed to pull selection null 问题
我在 eclipse的Android项目中,在 DDMS导出db文件 时,发现报错:Failed to pull selection null 在左侧选中设备,在进行导出 这样就可以正常的进行导出db ...