首页 > 其他分享 >ORM——类&对象操作

ORM——类&对象操作

时间:2023-05-20 17:46:01浏览次数:37  
标签:name 对象 auto models ORM 32 操作 now True

创建一个表(ORM中就是创建一个类)

  1. 前提是需要进行mysql数据库的配置:请见:数据库配置
  2. 通常设置在models.py中
  3. 下面将举例创建一个表,表头有username和passowrd两个值。
  4. 使用models模块来进行对数据库的操作用来和mysql进行交互的模块。
  5. 在models.py进行mysql数据交互的配置
  6.  
from django.db import models

class user(models.Model):    #继承父类
    username = models.CharField(max_length=32)   #创建一个名为suername的表头,设置值为varchar(32)
    password = models.CharField(max_length=32)   #创建一个名为password的表头,设置值为varchar(32)

对象:

OMR属性名称 mysql表结构   例句   说明
max_length=32 char(32)
username = models.CharField(max_length=32)
指定结构为字符串,最多32字符
primary_key = True primary key
models.AutoField(primary_key = True)
用于指定主键字段
default=‘xxx’ default ‘xxx’
username = models.CharField(default='xxx')
  • 用于设置默认值
  • 与null和blank互斥

unique=True

unique
name = models.CharField(max_length=32,unique=True)
  • 唯一

null=True

blank=True

not null
st_sex = models.CharField(max_length=32,null=True)
  • 数据库可以为null
  • form表单允许为空,一般会一起出现
  • 与default互斥

auto_now_add

auto_now

 
num = models.DateTimeField(auto_now_add=True)
num = models.DateTimeField(auto_now=True)
  • auto_now:每次修改、新增时修改为当前日期时间。
  • auto_now_add:新创建对象时自动添加当前日期时间。

类(表结构)创建

  • models.CharField

  1. 新增字符串字段
from django.db import models
class user(models.Model):
    username = models.CharField(max_length=32)   
    #创建数据名为username的,并且varchar(32)的表头。
  • models.AutoField

  1. 新增自增字段,并添加主键。
  2. 其中的permary_key为必填字段
pid = models.AutoField(primary_key = True)
  • models.IntegerField

  1. 一个整数类型。数值的范围是 -2147483648 ~ 2147483647。
num = models.IntegerField()
  • models.DateField

  1. 日期类型,日期格式为YYYY-MM-DD HH:MM[:ss[.uuuuuu]][TZ],相当于Python中的datetime.date的实例。
  2. auto_now和auto_now_add和default参数是互斥的,不能同时设置。

对象:

  • auto_now:每次修改、新增时修改为当前日期时间。
  • auto_now_add:新创建对象时自动添加当前日期时间。
num = models.DateTimeField(auto_now_add=True)
#datetime.datetime(2023,4,26,16,54,20,89451,tzinfo=<UTC>)
num = models.DateTimeField(auto_now=True)
#datetime.datetime(2023,4,26,16,54,20,89451,tzinfo=<UTC>)
  • DecimalField

  1. 输入十进制
name = models.DecimalField(max_digits=5,decimal_places=2)  #999.99
  • TextField

  1. 本文信息,通常为描述信息
  2. 最好加一个可以为空的属性
name = models.TestField(null=True)
  • models.ForeignKey

  1. 进行对多连表的创建,并设置级联删除。即当关联数据删除时,该信息也将删除。
  2. 创建完成后,表头信息是name_id  而不是name
  3. 创建完成关联对象后,想要展示,那么使用i.name.关联对象的属性即可调出。
name = models.ForeignKey('User',on_delete=models.CASCADE)  #级联,并设置删除方式为级联删除。

可以设置其他选项:

    name = models.ForeignKey('User',on_delete=models.SET())   #当关联数据删除时,设置一个其他值
    name = models.ForeignKey('User',on_delete=models.SET_NULL) #当关联数据删除时,设置为NULL
    name = models.ForeignKey('User',default='xxx',on_delete=models.SET_DEFAULT)  #当关联表删除时,设置为默认值。
    name = models.ForeignKey('User',related_name='xxx',on_delete=models.SET_DEFAULT)  #使用反向查询时使用。
  • ManyToManyField

  1. 创建多连表时,使用该属性可以直接将多个表进行关联
  2. 该命令会 生成第三张表
  3. 如果要查询所关联的对象所有信息,那么使用author.books.all()

删:

对类(表)进行删除

如果需要删除整个类(这个表),那么就直接将已经同步好的ORM进行注释即可。

改:

对类(表)进行更改:

  • 修改对象名称(表头信息)

直接修改名称即可,然后再将数据同步到数据库中。

数据库同步:

  1. 需要两个步骤进行。
  2. 在需要运行时,APP对mysql的配置一定要已经写入到了django的配置表中,否则将会报错。

创建迁移文件

  1. 配置如果没有异常情况时,会在该路径中创建一个py文件,记录创建信息。
python .\manage.py makemigrations

上传数据库

  1. 运行时,会出现大量OK字段,这里关注APP名称字段是否OK即可。
python .\manage.py migrate

数据退回操作

  • 在没有进行同步命令时,是可以进行回退的。
  • 当输入第一条更改命令后,想要回退,那么把APP中的更改文件删除即可。

查看操作记录

要查看的话,就看APP的相关操作即可。

 

标签:name,对象,auto,models,ORM,32,操作,now,True
From: https://www.cnblogs.com/xinbing/p/17417431.html

相关文章

  • Revit二次开发实战02(选择对象Selection)
    Revit二次开发实战 Selection主要用于和用户交互,通过用户的选择,设置操作对象,以便进行处理;Selection属于界面操作的范畴,因此位于UIDocument类下面,而不是Document类下面;可以选择一个对象、多个对象、选择点、选择矩形框、框选多个对象等;通过过滤器可以提供一个强大的功能,可以......
  • ORM——文字类
    对象关系映射(ORM)(ObjectRelationalMapping,简称ORM)是一种为了解决面向对象与关系数据库存在的互不匹配的现象的技术。特点:它通常将一个类和一张表一一对应,类的每个实例对应表中的一条记录,类的每个属性对应表中的每个字段。对数据库的映射,不用直接编写SQL代码,只需操作对象就......
  • ORM——数据库连接
    在Django中使用mysql数据库:1.创建Mysql数据库,具体创建过程请见mysql文章2.设置Django配置文件DATABASES={'default':{'ENGINE':'django.db.backends.mysql','NAME':'ftp','HOST':'172.16.24......
  • 面向对象编程OOP
    面向对象编程OOP面向过程思想步骤清晰简单,第一步作什么,第二步做什么....面对过程适合处理一些较为简单的问题。面向对象思想物以类聚,分类是思维模式,思考问题首先会解决问题需要哪些分类,然后对这些分类进行单独思考。最后,才对某个分类下的细节进行面向过程的思索。面向对象适......
  • 类与对象的关系
    类与对象的关系类是一种抽象的数据类型,它是对某一类整体描述/定义,但并不能代表某一个具体的事物。对象是抽象概念的具体实例。创建与初始化对象使用new关键字创建对象使用new关键字创建的时候,除了分配内存空间之外,还会给创建好的对象进行默认的初始化以及对类中构造器的调用......
  • 安装ubuntu22.04.2后的操作
    一、更新系统指令一:sudoapt-getupdate指令二:sudoapt-get-ydist-upgrade指令三:sudoapt-getclean说明:清除更新时下载回来的软件包。指令四:sudoapt-getautoremove说明:自动清除更新后用不到的旧版本文件(例如旧的核心文件)备注:若不及时移除旧核心文件,容易造成/boot空......
  • 创建对象内存分析
    创建对象内存分析类与对象类是一个模板,抽象;对象是一个具体的示例方法定义、调用!对应的引用引用类型:基本类型(8种)对象是通过引用来操作的:栈------>堆属性:字段Field成员变量默认初始化:数字:00.0char:u0000boolean:null引用:null修饰符属性类型属性名=......
  • day13-14 函数对象与装饰器
    【三】名称空间与闭包【1】名称空间名称空间即存放名字与对象映射/绑定关系的地方。对于x=3,Python会申请内存空间存放对象3,然后将名字x与3的绑定关系存放于名称空间中,delx表示清除该绑定关系。在程序执行期间最多会存在三种名称空间(1)内建名称空间伴随python解释器的......
  • SQL语句操作
    mysql数据库(数据的存储+管理)就是数据的增删改查,(CRUD)1.Ccreate2.Rretrieve3.Uupdate4.Ddeletesql语句按照功能分成几类:1.DDL定义语句创建数据库创建表修改表结构等2.DML操纵针对table数据表中数据的增删改使用DML3.DQL查询针对table数据表中的数据插叙操作使......
  • 操作系统
       ......