1. 配置数据库
| |
| pip install mysqlclient |
| |
| |
| 在项目中的settings.py中配置 |
| 将: |
| DATABASES = {'default': { |
| 'ENGINE': 'django.db.backends.sqlite3', |
| 'NAME': BASE_DIR / 'db.sqlite3',}} |
| 修改为: |
| DATABASES = { |
| 'default': { |
| 'ENGINE': 'django.db.backends.mysql', |
| 'NAME': "dbname", |
| "USER": "ROOT", |
| "PASSWORD": "XXX", |
| "HOST": "", |
| "PORT": "" |
2. 数据库表结构
| |
| 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) |
| |
3. 创建表
| |
| 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) |
| |
| |
| |
| |
| |
| create database 库名 default charset utf8 collate utf8_general_ci; |
| |
| |
| |
| |
| python manage.py makemigrations |
| python manage.py migrate |
| |
| |
| |
| |
| |
| |
| |
| age = models.IntegerField(default=2) |
| |
| data = models.IntegerField(null=True,blank=True) |
| |
| |
| |
4. 在项目中操作表
| 根据创建的数据库类操作数据(类名.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) |
| |
5. 查询方法
| |
| 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] |
| |
| |
| que = models.PrettyNum.objects.all()[0:10] |
| |
| |
| que = models.PrettyNum.objects.all()[10:20] |
| |
| |
| que = models.PrettyNum.objects.all()[20:30] |
| |
| |
| |
| data = models.PrettyNum.objects.all().count() |
| data = models.PrettyNum.objects.filter(id=5).count() |
| |
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· Docker 太简单,K8s 太复杂?w7panel 让容器管理更轻松!
2022-01-04 python学习目录05-hashlib-hmac-copy-uuid模块的语法