【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 子应用名
    

修改数据表中的已有字段名
执行迁移命令
查看数据库字段

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

chuntian_tester

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值