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



边栏推荐
- 20排位赛3
- Flex flexible layout
- [bw16 application] Anxin can realize mqtt communication with bw16 module / development board at instruction
- 有没有大佬帮忙看看这个报错,有啥排查思路,oracle cdc 2.2.1 flink 1.14.4
- What development models did you know during the interview? Just read this one
- JS逆向教程第一发
- Scratch crawler mysql, Django, etc
- Liunx command
- 官媒关注!国内数字藏品平台百强榜发布,行业加速合规健康发展
- 哈夫曼编码压缩文件
猜你喜欢
![[bw16 application] Anxin can realize mqtt communication with bw16 module / development board at instruction](/img/7f/d0917366c68865222154d82b9e7b40.png)
[bw16 application] Anxin can realize mqtt communication with bw16 module / development board at instruction

Arcgis操作: 批量修改属性表

Applet popup half angle mask layer

AI moves from perception to intelligent cognition

使用BigDecimal的坑

Pit encountered by vs2015 under win7 (successful)

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

细说Mysql MVCC多版本控制

Strategic cooperation subquery becomes the secret weapon of Octopus web browser

基础篇:带你从头到尾玩转注解
随机推荐
Switching value signal anti shake FB of PLC signal processing series
Analyze Android event distribution mechanism according to popular interview questions (II) -- event conflict analysis and handling
Internship log - day04
iNFTnews | 时尚品牌将以什么方式进入元宇宙?
Why are social portals rarely provided in real estate o2o applications?
【frida实战】“一行”代码教你获取WeGame平台中所有的lua脚本
Strategic cooperation subquery becomes the secret weapon of Octopus web browser
Scratch crawler mysql, Django, etc
Codeforces - 1324d pair of topics
thinkphp3.2信息泄露
Lesson 1: finding the minimum of a matrix
phpcms实现PC网站接入微信Native支付
C# 初始化程序时查看初始化到哪里了示例
[Frida practice] "one line" code teaches you to obtain all Lua scripts in wegame platform
Applet sliding, clicking and switching simple UI
视频化全链路智能上云?一文详解什么是阿里云视频云「智能媒体生产」
Addition, deletion, modification and query of ThinkPHP database
js逆向教程第二发-猿人学第一题
[original] what is the core of programmer team management?
How to become a senior digital IC Design Engineer (1-6) Verilog coding Grammar: Classic Digital IC Design