当前位置:网站首页>【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 子应用名
边栏推荐
- JS reverse tutorial second issue - Ape anthropology first question
- Win10安装VS2015
- Diffusion模型详解
- H5 web player easyplayer How does JS realize live video real-time recording?
- Codeforces - 1324d pair of topics
- Writing file types generated by C language
- How to become a senior digital IC Design Engineer (5-2) theory: ULP low power design technology (Part 1)
- 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
- Flex flexible layout
- Gym - 102219J Kitchen Plates(暴力或拓扑序列)
猜你喜欢
Lecture 1: stack containing min function
Lesson 1: finding the minimum of a matrix
CSDN salary increase technology - learn about the use of several common logic controllers of JMeter
Esp8266 uses TF card and reads and writes data (based on Arduino)
Software modeling and analysis
EXT2 file system
Pit using BigDecimal
基础篇:带你从头到尾玩转注解
Pytest learning - dayone
Octopus future star won a reward of 250000 US dollars | Octopus accelerator 2022 summer entrepreneurship camp came to a successful conclusion
随机推荐
MongoDB创建一个隐式数据库用作练习
**Grafana installation**
Please ask me a question. I started a synchronization task with SQL client. From Mysql to ADB, the historical data has been synchronized normally
2016 CCPC Hangzhou Onsite
基于智慧城市与储住分离数字家居模式垃圾处理方法
ViewPager2和VIewPager的區別以及ViewPager2實現輪播圖
喜马拉雅网页版每次暂停后弹窗推荐下载客户端解决办法
Win10安装VS2015
Gym - 102219J Kitchen Plates(暴力或拓扑序列)
CDZSC_2022寒假个人训练赛21级(2)
用flinksql的方式 写进 sr的表,发现需要删除的数据没有删除,参照文档https://do
H5 web player easyplayer How does JS realize live video real-time recording?
flinkcdc采集oracle在snapshot阶段一直失败,这个得怎么调整啊?
Become a "founder" and make reading a habit
ViewPager2和VIewPager的区别以及ViewPager2实现轮播图
Esp8266 uses TF card and reads and writes data (based on Arduino)
【无标题】
CDZSC_ 2022 winter vacation personal training match level 21 (1)
Application of C # XML
Garbage disposal method based on the separation of smart city and storage and living digital home mode