当前位置:网站首页>【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 子应用名
边栏推荐
- thinkphp3.2信息泄露
- Can't connect to MySQL server on '(10060) solution summary
- 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
- 14th test
- Performance optimization record of the company's product "yunzhujia"
- CDZSC_ 2022 winter vacation personal training match level 21 (2)
- CSDN salary increase technology - learn about the use of several common logic controllers of JMeter
- arcgis操作:dwg数据转为shp数据
- 根据热门面试题分析Android事件分发机制(二)---事件冲突分析处理
- How to use clipboard JS library implements copy and cut function
猜你喜欢
How to use clipboard JS library implements copy and cut function
Impression notes finally support the default markdown preview mode
字节跳动 Kitex 在森马电商场景的落地实践
# Arthas 简单使用说明
Applet popup half angle mask layer
中国首款电音音频类“山野电音”数藏发售来了!
Future development blueprint of agriculture and animal husbandry -- vertical agriculture + artificial meat
arcgis操作:dwg数据转为shp数据
js逆向教程第二发-猿人学第一题
Software modeling and analysis
随机推荐
Application of C # XML
Sword finger offer II 107 Distance in matrix
Detailed explanation of diffusion model
Communication mode between processes
flink. CDC sqlserver. You can write the DEM without connector in sqlserver again
2016 CCPC Hangzhou Onsite
Deep understanding of UDP, TCP
Dynamics 365online applicationuser creation method change
ViewPager2和VIewPager的区别以及ViewPager2实现轮播图
[bw16 application] Anxin can realize mqtt communication with bw16 module / development board at instruction
Main (argc, *argv[]) details
企业实战|复杂业务关系下的银行业运维指标体系建设
CSDN salary increase technology - learn about the use of several common logic controllers of JMeter
Write VBA in Excel, connect to Oracle and query the contents in the database
网上可以开炒股账户吗安全吗
Niuke - Huawei question bank (61~70)
农牧业未来发展蓝图--垂直农业+人造肉
Flex flexible layout
2020CCPC威海 J - Steins;Game (sg函数、线性基)
CDZSC_ 2022 winter vacation personal training match level 21 (2)