orm模型创建表到数据库(增删改)

本文介绍了如何在Django框架中设置数据库连接,定义模型类来映射数据库表,包括CharField、DateField、IntegerField等字段类型,以及外键和逻辑删除的实现。同时,文章详细阐述了数据的增、删、改、查操作,如makemigrations和migrate命令,以及在Pythonshell中直接操作数据库。
摘要由CSDN通过智能技术生成

字段的数据类型

 

 外键设定

 

 约束

 1,在settings中设置数据库连接

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.mysql',
        'HOST': '128.0.0.1',  # 数据库主机
        'PORT': 3306,  # 数据库端口
        'USER': 'root',  # 数据库用户名
        'PASSWORD': 'qwe123',  # 数据库用户密码
        'NAME': 'dj13'  # 数据库名字
    }
}

2,在项目文件的init中设置pymysql(那你肯定是要下载pymysql)

 3,在子应用的models.py中设置你要的模型类

from django.db import models

# Create your models here.


#models.Model把类中的属性转换为数据库的字段
#模型类名对应表名  属性对应字段
class BookInfo(models.Model):
    #属性名 = 属性类型(选项)
    #字段名  模型类  数据类型     最大数         在后台显示别名
     name=models.CharField(max_length=20,verbose_name='书名')
    #日期 类型DateField
     pub_date=models.DateField(verbose_name='发布日期')
    #整形    ImageField   默认值  default
     readcount=models.ImageField(verbose_name='阅读量',default=0)
     commentcount=models.ImageField(verbose_name='评论量',default=0)
     #逻辑删除BinaryField  布尔类型
     is_delete=models.BinaryField(verbose_name='逻辑删除',default=False)

     class Meta:
         db_table='bookinfo'           #指定创建的表明,不然就会默认上面的类名
         verbose_name='图书'             #在admin后台中显示名称
         verbose_name_plural=verbose_name  #使他在后台中显示中文


     def __str__(self):
         '''定义每个数据对象的显示信息'''
         return self.name



#准备人物表
class PeopleInfo(models.Model):
     GENDER_CHOICES=(
         (0,'male'),
         (1,'female')
     )
     name=models.CharField(max_length=20,verbose_name='名称')
     #SmallIntegerField可以choice是个元祖做选择
     gender=models.SmallIntegerField(choices=GENDER_CHOICES,default=0,verbose_name='性别')
     description=models.CharField(max_length=200,null=True,verbose_name='人物描述')
     #外键ForeignKey   第一个参数是表示和那个类连接  二个参数是约束这个表约束为删除主表外键的数据一起删
     book=models.ForeignKey(BookInfo,on_delete=models.CASCADE)

     class Meta:
         db_table='peopleinfo'   #指定创建的表明,不然就会默认上面的类名
         verbose_name='人物信息'     #在admin后台中显示名称
         verbose_name_plural=verbose_name  #使他在后台中显示中文


     def __str__(self):
         '''定义每个数据对象的显示信息'''
         return self.name



4,设置完成后进行迁移命令(生成迁移文件修改字段类型才需要重新迁移是用来记录有木有对原来的做修改,还没创建成表)

python manage.py makemigrations

5,创建表

python manage.py migrate

6,shell工具进去环境测试   python manage.py shell

7,增加数据

第一种增加方法

(1)from app.models import BookInfo,PeopleInfo     先导入创建好的模型类

(2)book=BookInfo(name='python',pu_date='2023-6-7')   实例化后直接填属性名和要导入的数据(3)book.save()     保存一下okk

第二种

BookInfo.objects.create(name='hello',pub_date='2023-6-18')

8,修改数据---先确定数据是不是存在

第一种

book = BookInfo.objects.get(name = "python") 获取单个数据的值
book.name='java'          赋值方法的修改
book.save()                   保存

第二种

update() where 条件查询 在模型类中 用filter()
filter 返回的是一个查询集
get 返回的是个字符串
BookInfo.objects.filter(name="hello").update(name="world")  

9,删除数据

删除 delete()
1. 模型类对象.delete()
2. 模型类对象.objects.filter(查询属性).delete()

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值