首页 > 数据库 >django-07-操作数据库

django-07-操作数据库

时间:2022-11-10 16:36:20浏览次数:47  
标签:obj 07 models 数据库 django objects UserInfo data id

django操作表-models.py(app)

- 1. 创建表;删除表;修改表:在models.py中创建数据库类
                class UserInfo(models.Model):
                    name = models.CharField(max_length=32)
                    password = models.CharField(max_length=64)
                    age = models.IntegerField()
                相当于:
                    create table app01_userinfo(
                        id bigint auto_increment primary key,
                        name varchar(32),
                        password varchar(64),
                        age int)

            - 2. 在终端执行命令:注意: APP已提前注册,
                  在次创建表(删除表:把表注释掉)就再次执行命令
                        python manage.py makemigrations
                        python manage.py migrate

                  在表中新增列时,由于已经存在列中可能已有数据,所以新增列必须要指定列对应的数据:
                    1. 手动输入一个值
                    2. 新增列时添加默认值
                        age = models.IntegerField(default=2)
                    3. 允许为空
                        data = models.IntegerField(null=True,blank=True)

                    以后在开发过程中想要对表结构进项调整:
                        在models.py文件中操作类即可;

操作表中的数据:可以写在视图函数内(在url请求时就执行数据操作)

 根据创建的数据库类操作数据(类名.objects.xxx )
            - 1. 新建
                UserInfo.objects.create(name="lili", password="321", age=18)

            - 2. 删除
                 UserInfo.objects.filter(id=2).delete()  # 根据id=3条件删除
                 Department.objects.all().delete()  # 删除整张表所有数据

            - 3. 更新数据
                 UserInfo.objects.all().update(password=999) # 更新所有数据
                 UserInfo.objects.filter(id=3).update(password=666)  # 更新一条数据

            - 4. 获取数据 : data_list=[对象,对象,对象] 得到的是QuerySet类型
                 data_list = UserInfo.objects.all()  # 获取所有数据
                 for obj in data_list:
                     print(obj.id, obj.name, obj.password, obj.age)

                 data_list=[对象,]
                 data_list=UserInfo.objects.filter(id=3) # 获取一个数据,结果还是一个对象
                 print(data_list)

                 或直接获取第一行数据对象,不需要再次循环:
                 row_obj= UserInfo.objects.filter(id=3).first()
                 print(row_obj.name)

标签:obj,07,models,数据库,django,objects,UserInfo,data,id
From: https://www.cnblogs.com/kh-1314/p/16877520.html

相关文章

  • django 根据数据库表结构逆向操作model,同步表结构到models.py
    根据数据库表结构的修改,同步models.py,比如我们修改了数据库中某张表的字段类型,或者给这张表又加了好几个字段,这时我们在models.py中一个字段一个字段的加会有点麻烦,并且可......
  • django-05-请求和响应
    请求和响应defsomething(request):#request是一个对象,封装了用户发送过来的所有请求相关数据-1.[请求]获取请求方式GET/POSTprint(request.meth......
  • django-02-初体验
    一.快速上手1.确保APP已注册[settings.py]-在项目中的settings.py中关联APP中的apps.py中的类-INSTALLED_APPS=['app01.apps.App01Config']......
  • Oracle 数据库更新补丁
              这里以Oracle19cGI、DBforOralceLinux8.6平台跟新官方最新补丁为例,其他版本、平台类似: 1、登录oraclesupport(需购买oracle服务),下载l......
  • ✍72 神通数据库部署
    一.神通数据库部署二进制部署及容器部署相关文件私有库:https://gitee.com/wx_3d25ad0b9a/ShenTong_DB#含win&linux镜像可以拉取⬇⬇⬇⬇二.容器部署1.......
  • MySql数据库触发器DML(数据库操作)
    1.数据库触发器的作用是什么?触发器主要用于强制复杂的业务规则和要求,还有助于强制引用的完整性,便于在添加,更新或删除表中的行时保留表之间已定义的关系。 2.新建两张......
  • Mongodb数据库和MySQL的比较
    谈谈Mongodb和MySQL的区别什么是Mongodb数据库Mongodb是一个介于关系数据库和非关系数据库之间的产品(Nosql),非关系型数据库(nosql),属于文档型数据库。文档是mongoDB......
  • SQLServer比较两个数据库的对象
     两个变量,表示要比较的数据库名:@SourceDatabase@DestinationDatabaseDECLARE@SourceDatabaseVARCHAR(50)DECLARE@DestinationDatabaseVARCHAR(50)DECLARE@SQL......
  • 开源数据库PolarDB为什么能捕获娃哈哈的心?
    简介: 在10月25日由阿里云开发者社区、PolarDB开源社区、infoQ联合举办的「开源人说」第三期——《数据库PolarDB专场》沙龙上,中启乘数科技(杭州)有限公司联合创始人唐成带来......
  • PolarDB开源未来将有哪些新动向?阿里云数据库开源负责人来解答
    简介: 在10月25日由阿里云开发者社区、PolarDB开源社区、infoQ联合举办的「开源人说」第三期——《数据库PolarDB专场》沙龙上,阿里云数据库开源负责人、数据库资深技术专家......