博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
06-模型基础
阅读量:4951 次
发布时间:2019-06-11

本文共 3690 字,大约阅读时间需要 12 分钟。

 模型基础

01-Django的ORM简介

02-数据库连接配置

03-模型的创建与映射

04-数据的增删改查

 

01-Django的ORM简介

Django的ORM系统的分析:

 

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

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

 

django模型映射关系

 

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

2. 模型如果需要映射到数据库,所在的app必须被安装.

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

 

02-数据库的配置:

1.在settings.py中配置DATABASES

 

DATABASES = {    'default': {        'ENGINE': 'django.db.backends.mysql',  # 数据库引擎        'NAME': 'crm',  # 数据库名称        'USER': 'guang',  # 链接数据库的用户名        'PASSWORD': 'q123',  # 链接数据库的密码        'HOST': '127.0.0.1',  # mysql服务器的域名和ip地址        'PORT': '3306',  # mysql的一个端口号,默认是3306    }}

 

2、pymsql数据库连接器的配置:

 在虚拟环境中安装pymysql: pip install pymysql

设置连接器为pymysql:在主目录下的的__init__.py文件添加下面两句import pymysqlpymysql.install_as_MySQLdb()

 

03-模型的创建与映射

就是django.db.models.Model 的一个子类。

模型定义在app文件夹下的models.py文件

 

 

常用的字段类型映射关系:

 


 

 

常用字段类型参考:


 

 

 

激活模型

1、创建迁移:python manage.py makemigrations appname

 

必须要在settings中注册注册应用

- 创建迁移 只是告诉django,我们修改了模型,它不会操作数据库python manage.py makemigrations appname

 

 

 2、 查看迁移执行命令:python manage.py sqlmigrate teacher 0001

如果我们想看,我们的更改,会对数据库产生什么影响,我们可以看它大概会执行什么sql语句(就是看低层执行的代码)

 

执行迁移 操作数据库,将对模型的改动应用到数据库(底层就是执行了sql)

 

3、  执行迁移:python manage.py migrate appname


 

模型映射到数据库中是一张表 ,表名 = appname_模型name

执行上面的命令,到底干了些什么?

- 在app中查找迁移文件,并且去django_migrations表中查找,如果有没有执行的迁移文件,就去执行它

- 执行了迁移生成的sql语句

- 如果成功,会在django_migrations表中增加一条记录

(修改迁移文件后需要重新创建迁移和执行迁移)

 

04-数据的增删改查

django 调试环境:python manage.py shell

数据的增删改查----------增加数据

1.在视图函数中导入User模型类,然后使用下面的方法添加数据

 

数据的增删改查----------查找数据

1.在视图函数中导入User模型类,然后使用下面的方法查数据

 

all()和filter()方法返回的是QuerySet对象.

get()方式返回的单个对象,如果符合条件的对象有多个,则get报错!

 

数据的增删改查----------修改数据

1.在视图函数中导入User模型类,然后使用下面的方法修改数据

在这之前,我们在模型类中添加了一个city的属性,并设置了一个默认值,然后执行了映射命令,讲字段成功映射到了数据库中.

 

数据的增删改查----------删除数据

1.在视图函数中导入User模型类,然后使用下面的方法删除数据

 

 数据的增删改查--------数据库相关的接口(QuerySet API)

1.从数据库中查询出来的结果一般是一个集合,这个集合叫做 QuerySet.

2.QuerySet是可迭代对象.

3.QuerySet支持切片, 不支持负索引.

4.可以用list强行将QuerySet变成列表.

 

 数据的增删改查总结

### 增```# 第一种方式In [3]: s = Student()                                                                                  In [5]: s.name = '心蓝'                                                                                In [6]: s.age = 18                                                                                     In [7]: Student.objects.all()                                                                          Out[7]: 
In [8]: s.save() # save之后才会写到数据库# 第二种方式stu = Student.objects.create(name='敬子明', age=10) # 直接创建```### 删````In [12]: stu.delete() Out[12]: (1, {
'teacher.Student': 1})# 删除多条In [12]: Student.objects.filter(sex=1).delete() Out[12]: (1, {
'teacher.Student': 1})````### 改```# 改一条In [16]: s.age = 16 In [17]: s.save() # 改多条In [10]: Student.objects.all().update(sex=0) Out[10]: 2```### 查```# 查所有In [2]: Student.objects.all() Out[2]:
,
]># 查一条In [3]: Student.objects.get(pk=1) Out[3]:
# get 返回的是对象 如果返回了多值就会报错# 带条件In [8]: res = Student.objects.filter(sex=1) # where sex=1 In [9]: res Out[9]:
,
]>

 


 

选择大于努力 ,完结--------

 

转载于:https://www.cnblogs.com/jun-1024/p/10662296.html

你可能感兴趣的文章
JavaScript利用闭包实现模块化(*****************************************)
查看>>
View(视图)——AutoCompleteTextView 、Spinner和消息提示
查看>>
Ubuntu16.04 + OpenCV源码 + Qt5.10 安装、配置
查看>>
php中mysqli_fetch_assoc()和mysqli_fetch_row()的区别
查看>>
线性基
查看>>
django 多对多 增 删 改 查
查看>>
Zynq7000开发系列-7(在Zybo上运行Linaro桌面系统)
查看>>
NSSetUncaughtExceptionHandler
查看>>
bc#34-2 Building Blocks
查看>>
struts2自定义结果类型demo
查看>>
30个高质量的Psd设计文件分享
查看>>
生成器
查看>>
go 格式化时间戳
查看>>
Spring 2017 Assignments2
查看>>
查找进程并杀掉
查看>>
BZOJ 3943 [Usaco2015 Feb]SuperBull:最大生成树
查看>>
ueditor 控制上传图片的显示尺寸
查看>>
poj 1920 Towers of Hanoi
查看>>
第二十三模板 13模板成员
查看>>
oracle为IN OUT变量或OUT变量赋值时提示“表达式''不能用作赋值目标”
查看>>