当前位置:网站首页>【ORM框架】
【ORM框架】
2022-07-07 07:17:00 【chuntian_tester】
Django ORM框架操作数据库
Django ORM框架
定义
- 把类和数据表进行映射
- 通过类和对象就能操作它所对应数据表中的数据(CRUD)
步骤
配置数据库连接信息
- 创建数据库和用户
- 配置数据库
- 安装mysqlclient在子应用的models.py中定义模型类
- 一般在子应用models.py中定义模型类
- 模型类必须继承Model类或者Model的子类
- 在模型类中定义属性(必须为Field子类),相当于数据表中字段
- CharField–> varchar
- IntegerField–> integer
- BooleanField–>bool
class Animal(models.Model):
name = models.CharField(max_length=32)
age = models.IntegerField()
gender = models.BooleanField()
class Meta:
managed = True
样例
1.定义模型类
class Projects(models.Model):
""" max_length:必传参数 verbose_name:在渲染表单的时候,下面会有一个中文的描述信息:项目名称; 在后台管理站点也会把当前字段加上一个描述 help_text:在api接口文档中会作为中文描述信息 unique=True: 代表给一个字段设置唯一约束,默认为False default:指定默认值 TextField():支持长文本 blank=True:允许传空字符串,DRF进行反序列化输入时才有效 null = Tru:允许为null,DRF进行反序列化输入时才有效 DateTimeField指定auto_now_add=True,在创建一条记录时会自动创建时间作为该字段的值,后续更新不会改变该值 DateTimeField指定auto_now=True,在更新一条记录时,会自动将更新记录的时间作为该字段的值 """
name = models.CharField(max_length=50,
verbose_name='项目名称',
help_text='项目名称',
unique=True)
leader = models.CharField(max_length=10,
verbose_name='项目负责人',
help_text='项目负责人')
# default=xxx指定默认值
is_execute = models.BooleanField(verbose_name='是否启动项目',
help_text='是否启动项目',
default=False)
# TextField()支持长文本
# blank=True,允许传空字符串
# null = True,允许为null
desc = models.TextField(verbose_name='项目描述信息',
help_text='项目描述信息',
blank=True, null=True, default='')
# DateTimeField指定auto_now_add=True,在创建一条记录时会自动创建时间作为该字段的值,后续更新不会改变该值
create_time = models.DateTimeField(auto_now_add=True,
verbose_name='创建时间',
help_text='创建时间')
# DateTimeField指定auto_now=True,在更新一条记录时,会自动将更新记录的时间作为该字段的值
update_time = models.DateTimeField(auto_now=True,
verbose_name='更新时间',
help_text='更新时间')
# 修改模型类元信息
class Meta:
# # 是否被管理
# managed = True
# db_table:指定表名
db_table = 'tb_projects'
2.迁移
terminal在项目根目录执行命令:
# 迁移所有子应用
python manage.py makemigrations
python manage.py migrate
# 迁移指定子应用
python manage.py makemigrations 子应用名
python manage.py migrate 子应用名

生成的数据表名默认为:子应用名_模型类名小写
# 查看生成的迁移脚本原生sql语句
python manage.py sqlmigrate 子应用名(projects) 迁移脚本名(0002_projects)

- 通过类和对象完成数据库增删改查操作
ORM对象构成
a.数据库: 需要手动提前创建数据库
b.数据表:与ORM框架中models.py中的模型类一一对应
c.字段:模型类中的类属性
d.记录:类似于模型类的多个实例
全局配置文件settings.py中配置数据库

ORM修改表中已有字段名
在我们修改线上数据库的某个字段名或者新增字段,删除字段前,都应对现有数据进行备份,可以冷备,可以热备;
- 冷备:mysqldumps命令可以做冷备
ORM修改已有字段:
模型类中修改字段名(一般不能修改id主键)
重新执行迁移脚本
- python manage.py makemigrations 子应用名 - python manage.py migrate 子应用名



边栏推荐
- CDZSC_ 2022 winter vacation personal training match level 21 (1)
- Detailed explanation of diffusion model
- Addition, deletion, modification and query of ThinkPHP database
- In addition to the objective reasons for overtime, what else is worth thinking about?
- Sword finger offer II 107 Distance in matrix
- Internship log - day04
- C# 初始化程序时查看初始化到哪里了示例
- CSDN salary increase technology - learn about the use of several common logic controllers of JMeter
- Luogu p2482 [sdoi2010] zhuguosha
- [4g/5g/6g topic foundation-146]: Interpretation of white paper on 6G overall vision and potential key technologies-1-overall vision
猜你喜欢

AI moves from perception to intelligent cognition

First issue of JS reverse tutorial

js逆向教程第二发-猿人学第一题

web3.0系列之分布式存储IPFS

Use 3 in data modeling σ Eliminate outliers for data cleaning

Impression notes finally support the default markdown preview mode

Elaborate on MySQL mvcc multi version control

【原创】程序员团队管理的核心是什么?

小程序滑动、点击切换简洁UI

能源路由器入门必读:面向能源互联网的架构和功能
随机推荐
Create an int type array with a length of 6. The values of the array elements are required to be between 1-30 and are assigned randomly. At the same time, the values of the required elements are diffe
Hcip first day notes sorting
arcgis操作:dwg数据转为shp数据
Impression notes finally support the default markdown preview mode
剑指 Offer II 107. 矩阵中的距离
Applet popup half angle mask layer
如何成为一名高级数字 IC 设计工程师(1-6)Verilog 编码语法篇:经典数字 IC 设计
Write it into the SR table in the way of flinksql. It is found that the data to be deleted has not been deleted. Refer to the document https://do
Become a "founder" and make reading a habit
Writing file types generated by C language
Win10安装VS2015
14th test
Scratch crawler mysql, Django, etc
企业实战|复杂业务关系下的银行业运维指标体系建设
web3.0系列之分布式存储IPFS
HCIP 第一天 笔记整理
Pytest learning - dayone
Pit using BigDecimal
Analyze Android event distribution mechanism according to popular interview questions (I)
根据热门面试题分析Android事件分发机制(一)