创建一个表(ORM中就是创建一个类)
- 前提是需要进行mysql数据库的配置:请见:数据库配置
- 通常设置在models.py中
- 下面将举例创建一个表,表头有username和passowrd两个值。
- 使用models模块来进行对数据库的操作用来和mysql进行交互的模块。
- 在models.py进行mysql数据交互的配置
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) |
|
指定结构为字符串,最多32字符 |
primary_key = True | primary key |
|
用于指定主键字段 |
default=‘xxx’ | default ‘xxx’ |
|
|
unique=True |
unique |
|
|
null=True blank=True |
not null |
|
|
auto_now_add auto_now |
|
|
类(表结构)创建
-
models.CharField
- 新增字符串字段
from django.db import models
class user(models.Model):
username = models.CharField(max_length=32)
#创建数据名为username的,并且varchar(32)的表头。
-
models.AutoField
- 新增自增字段,并添加主键。
- 其中的permary_key为必填字段
pid = models.AutoField(primary_key = True)
-
models.IntegerField
- 一个整数类型。数值的范围是 -2147483648 ~ 2147483647。
num = models.IntegerField()
-
models.DateField
- 日期类型,日期格式为YYYY-MM-DD HH:MM[:ss[.uuuuuu]][TZ],相当于Python中的datetime.date的实例。
- 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
- 输入十进制
name = models.DecimalField(max_digits=5,decimal_places=2) #999.99
-
TextField
- 本文信息,通常为描述信息
- 最好加一个可以为空的属性
name = models.TestField(null=True)
-
models.ForeignKey
- 进行对多连表的创建,并设置级联删除。即当关联数据删除时,该信息也将删除。
- 创建完成后,表头信息是name_id 而不是name
- 创建完成关联对象后,想要展示,那么使用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
- 创建多连表时,使用该属性可以直接将多个表进行关联
- 该命令会 生成第三张表
- 如果要查询所关联的对象所有信息,那么使用author.books.all()
删:
对类(表)进行删除
如果需要删除整个类(这个表),那么就直接将已经同步好的ORM进行注释即可。
改:
对类(表)进行更改:
-
修改对象名称(表头信息)
直接修改名称即可,然后再将数据同步到数据库中。
数据库同步:
- 需要两个步骤进行。
- 在需要运行时,APP对mysql的配置一定要已经写入到了django的配置表中,否则将会报错。
创建迁移文件
- 配置如果没有异常情况时,会在该路径中创建一个py文件,记录创建信息。
python .\manage.py makemigrations
上传数据库
- 运行时,会出现大量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