django中数据库字段属性
| 类型: |
| AutoField: 整形 |
| IntegerField: 整形 |
| SmallIntegerField: 小整数 |
| CharField: 字符串 |
| DecimalField: 小数 |
| DateTimeField: 时间 |
| |
| 属性: |
| primary_key=True 主键自增 |
| verbose_name="ID" : 备注 |
| max_digits=10: 数字总长10位 |
| decimal_places=2, |
| default=0 |
| |
| 约束: |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| deport = models.ForeignKey(to="Department", to_field="id", on_delete=models.CASCADE) |
| |
| |
| |
| |
| 单选的约束: |
| |
| gender_choices = ( |
| (1, "男"), |
| (2, "女"), |
| ) |
| gender = models.SmallIntegerField(verbose_name="性别", choices=gender_choices) |
| |
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() |
| 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) |
| |
示例:
| from django.db import models |
| |
| |
| class Department(models.Model): |
| """部门表""" |
| |
| |
| |
| title = models.CharField(max_length=32, verbose_name="标题") |
| |
| |
| class UserInfo(models.Model): |
| """员工表""" |
| name = models.CharField(max_length=16, verbose_name="姓名") |
| password = models.CharField(max_length=64, verbose_name="密码") |
| age = models.IntegerField(verbose_name="年龄") |
| account = models.DecimalField(max_digits=10, verbose_name="账户余额", decimal_places=2, default=0) |
| creat_time = models.DateTimeField(verbose_name="入职时间") |
| |
| |
| |
| |
| deport = models.ForeignKey(to="Department", to_field="id", on_delete=models.CASCADE) |
| |
| |
| |
| gender_choices = ( |
| (1, "男"), |
| (2, "女"), |
| ) |
| gender = models.SmallIntegerField(verbose_name="性别", choices=gender_choices) |
| |
| |
| |
| ''' |
| 1. 工具连接mysql生成数据库 |
| create database 库名 default charset utf8 collate utf8_general_ci; |
| |
| 2. django 中修改配置文件,连接Mysql |
| |
| 3. django命令生成数据库表 |
| python manage.py makemigrations |
| python manage.py migrate |
| ''' |
| |
数据库查询方法
| 第一种: |
| models.PrettyNum.objects.filter(mobile="13400000000",id=12) |
| |
| 第二种: |
| data_dict={"mobile":"13400000000", "id":123} |
| models.PrettyNum.objects.filter(**data_dict) |
| |
| |
| models.PrettyNum.objects.filter(id=12) |
| models.PrettyNum.objects.filter(id__gt=12) |
| models.PrettyNum.objects.filter(id__gte=12) |
| models.PrettyNum.objects.filter(id__lt=12) |
| models.PrettyNum.objects.filter(id__lte=12) |
| |
| data_dict={"id_lte":12} |
| models.PrettyNum.objects.filter(**data_dict) |
| |
| |
| models.PrettyNum.objects.filter(mobile="13400000000") |
| models.PrettyNum.objects.filter(mobile__startswith="134") |
| models.PrettyNum.objects.filter(mobile__endswith="999") |
| models.PrettyNum.objects.filter(mobile__contains="999") |
| |
| data_dict={"mobile__contains":"999"} |
| models.PrettyNum.objects.filter(**data_dict) |
| |
| |
| |
| 分页: |
| que = models.PrettyNum.objects.all() |
| que = models.PrettyNum.objects.filter(id=1)[0:10] |
| |
| |
| data = models.PrettyNum.objects.all().count() |
| data = models.PrettyNum.objects.filter(id=5).count() |
| |
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 2025年我用 Compose 写了一个 Todo App
· 张高兴的大模型开发实战:(一)使用 Selenium 进行网页爬虫