当前位置:网站首页>【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 子应用名



边栏推荐
- Applet popup half angle mask layer
- In fact, it's very simple. It teaches you to easily realize the cool data visualization big screen
- EXT2 file system
- Gym - 102219J Kitchen Plates(暴力或拓扑序列)
- 企业实战|复杂业务关系下的银行业运维指标体系建设
- Oracle installation enhancements error
- ViewPager2和VIewPager的区别以及ViewPager2实现轮播图
- 2020 Zhejiang Provincial Games
- Main (argc, *argv[]) details
- Become a "founder" and make reading a habit
猜你喜欢

CentOS installs JDK1.8 and mysql5 and 8 (the same command 58 in the second installation mode is common, opening access rights and changing passwords)

JS逆向教程第一发
![[Frida practice]](/img/20/fc68bcf2f55b140d6754af6364896b.png)
[Frida practice] "one line" code teaches you to obtain all Lua scripts in wegame platform

“十二星座女神降临”全新活动推出

字节跳动 Kitex 在森马电商场景的落地实践

arcgis操作:dwg数据转为shp数据

Detailed explanation of diffusion model
![[4g/5g/6g topic foundation -147]: Interpretation of the white paper on 6G's overall vision and potential key technologies -2-6g's macro driving force for development](/img/21/6a183e4e10daed90c66235bdbdc3bf.png)
[4g/5g/6g topic foundation -147]: Interpretation of the white paper on 6G's overall vision and potential key technologies -2-6g's macro driving force for development

小程序实现页面多级来回切换支持滑动和点击操作
![[4g/5g/6g topic foundation-146]: Interpretation of white paper on 6G overall vision and potential key technologies-1-overall vision](/img/fd/5e8f74da25d9c5f7bd69dd1cfdcd61.png)
[4g/5g/6g topic foundation-146]: Interpretation of white paper on 6G overall vision and potential key technologies-1-overall vision
随机推荐
The industrial chain of consumer Internet is actually very short. It only undertakes the role of docking and matchmaking between upstream and downstream platforms
uboot机构简介
【原创】程序员团队管理的核心是什么?
CDZSC_ 2022 winter vacation personal training match level 21 (2)
Can't connect to MySQL server on '(10060) solution summary
小程序弹出半角遮罩层
如何成为一名高级数字 IC 设计工程师(5-2)理论篇:ULP 低功耗设计技术精讲(上)
Niuke - Huawei question bank (61~70)
Octopus future star won a reward of 250000 US dollars | Octopus accelerator 2022 summer entrepreneurship camp came to a successful conclusion
Why are social portals rarely provided in real estate o2o applications?
How to become a senior digital IC Design Engineer (5-3) theory: ULP low power design technology (Part 2)
2016 CCPC Hangzhou Onsite
用flinksql的方式 写进 sr的表,发现需要删除的数据没有删除,参照文档https://do
Lesson 1: finding the minimum of a matrix
MongoDB创建一个隐式数据库用作练习
企业实战|复杂业务关系下的银行业运维指标体系建设
Pit encountered by vs2015 under win7 (successful)
Applet sliding, clicking and switching simple UI
How to become a senior digital IC Design Engineer (1-6) Verilog coding Grammar: Classic Digital IC Design
Software modeling and analysis