Django ORM操作
一、ORM配置
1、创建数据库
2、/settings.py 中设置
DATABASES = { 'default': { 'ENGINE': 'django.db.backends.mysql', 'NAME': 'test', 'USER': 'root', 'PASSWORD': 'root', 'HOST': '127.0.0.1', 'PORT': '3306', } }
3、/__init__.py中配置
import pymysql pymysql.install_as_MySQLdb()
二、ORM创建表
1、/app01/models.py中创建表,一个类就是一个表,类名即表名,如创建外键django将会在设置字段名字的后面多加一个‘_id’
from django.db import models class UserGroup(models.Model): """部门表""" title = models.CharField(max_length=32) class UserInfo(models.Model): """员工表""" # nid = models.BigAutoField(primary_key=True) #默认自动创建,可以不写 user = models.CharField(max_length=32) password = models.CharField(max_length=64) # age = models.IntegerField(null=True) age = models.IntegerField(default=1) ug = models.ForeignKey('UserGroup', null=True, on_delete=models.CASCADE) # 创建UserGroup表的外键
2、/settings.py注册app
INSTALLED_APPS = [ 'django.contrib.admin', 'django.contrib.auth', 'django.contrib.contenttypes', 'django.contrib.sessions', 'django.contrib.messages', 'django.contrib.staticfiles', 'app01.apps.App01Config', #注册app ]
3、创建数据库表,在控制台输入
python manage.py makemigrations
python manage.py migrate
# 这样就会在数据库中创建需要的表和字段
4、4
5、5
6、
三、数据库相关操作(增删改查)/app01/views.py
1、增加记录/app01/views.py,给两张表中各增加一条记录
models.UserGroup.objects.create(title='销售部') #这就增加到表里了 models.UserInfo.objects.create( user='root', password='pwd', age=19, ug_id=1 )
2、查找记录,查找两张表中的所有记录
models.UserGroup.objects.all()
models.UserInfo.objects.all()
(1) 、查看一下查出来的信息group_list QuerySet类型(列表)
group_list=models.UserGroup.objects.all() print(group_list)
输出结果,是一个列表行的对象
[13/Mar/2021 23:59:01] "GET /app01/index.html HTTP/1.1" 200 3
<QuerySet [<UserGroup: UserGroup object (1)>, <UserGroup: UserGroup object (5)>]>
要想获取到真正的值,需要for循环
group_list=models.UserGroup.objects.all() print(group_list) for row in group_list: print(row.id,row.title)
输出结果:
<QuerySet [<UserGroup: UserGroup object (1)>, <UserGroup: UserGroup object (5)>]>
1 销售部
5 销售部
让newindex.html 渲染一下拿到内容
def index(request): # 增删改查 from app01 import models #查询 group_list=models.UserGroup.objects.all() print(group_list) for row in group_list: print(row.id,row.title) models.UserInfo.objects.all() return render(request,'newindex.html',{'group_list':group_list})
输出结果:
1===销售部
5===销售部
(2) 、查询,加条件,此时两个条件之间是 ’and’
group_list=models.UserGroup.objects.filter(id=1,title='销售部')
(3) 、查询,加条件,id__gt=1 表示id大于1;; id__lt=5表示id小于5
group_list=models.UserGroup.objects.filter(id__gt=1)
group_list=models.UserGroup.objects.filter(id__lt=5)
(4) 3
(5)
3、删除记录
删除 UserGroup表中 id=5的记录
models.UserGroup.objects.filter(id=5).delete()
4、修改记录
models.UserGroup.objects.filter(id=5).update(title='公关部')
总结一下
models.UserGroup.objects.create(title='销售部') #增
models.UserGroup.objects.filter(id=5).delete() #删
models.UserGroup.objects.filter(id=5).update(title='公关部') #改
group_list=models.UserGroup.objects.filter(id=1,title='销售部') #查
group_list=models.UserGroup.objects.filter(id__gt=1) #查
group_list=models.UserGroup.objects.filter(id__lt=5) #查
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 没有源码,如何修改代码逻辑?
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· DeepSeek 开源周回顾「GitHub 热点速览」
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了