第6节-----Django之模型的使用一
一.Django的ORM
ORM是什么????????
ORM是Object Relational Mapping的简称,即对象关系映射
ORM系统方法好处是不用直接写sql代码,只需要想操作对象一样从数据库操作数据
Django模型映射关系
模型的类--------->>>>>对应数据库的表
模型的类属性-------->>>>>>对应表的字段名
编写模型的注意事项??????
1.模型类必须写在app下的models.py中
2.模型如果需要映射到数据库中,则所在app必须在setting.py中的INSTALLED_APPS中注册
3.一个数据库的表对应一个模型的类,表中的字段对应模型的类属性项目文件夹下的setting.py中
二.数据库的配置
在项目文件夹下的settings.py中操作如下:
DATABASES = { 'default': { 'ENGINE': 'django.db.backends.mysql', # 数据库引擎 'NAME': 'student', #数据库名称 'USER': 'root', # 链接数据库的用户名 'PASSWORD': 'hauwu123', # 链接数据库的密码 'HOST': '127.0.0.1', # mysql服务器的域名和ip地址 'PORT': '3306', # mysql的一个端口号,默认是3306 } }
pymysql数据库连接器的设置
1.在虚拟环境中安装pymysql
2.在主目录下的__init__.py中加入代码如下:
import pymysql pymysql.install_as_MySQLdb()
如何使用Django中的模型?????????????
关键来了
1.在app下创建models.py中创建Django的模型类(app记得在settings.py中注册,同时记得在主目录下的urls.py中注册app)
文件路径如下:

代码如下:
from django.db import models
# Create your models here.
class User(models.Model):
u_id = models.AutoField(primary_key=True)
name = models.CharField(max_length=30)
age = models.IntegerField()
def __str__(self):
return 'User<u_id=%s,name=%s,age=%s>' % (self.u_id,self.name, self.age)
2. 如何将模型映射到数据库呢?????
(1)创建映射文件,命令后面可以添加app的名称,表示指定对某个app模型进行映射
(2)将映射文件中的映射数据提交到数据库中
如何操作????
代码:
(1)创建映射文件
python manage.py makemigrations
(2)提交映射文件到数据库
python manage.py migrate





三.数据库基本操作增删改查
1.增加插入数据:
mo_xin/urls.py
from django.urls import path from mo_xin import views urlpatterns = [ path('index1/', views.add_user), ]
mo_xin/views.py
from mo_xin.models import User from django.http import HttpResponse # 插入数据 def add_user(request): # 方法一: a = User(name='我爱中国1', age=1995) a.save() # 方法二: b = User() b.name = '我爱中国2' b.age = 1996 b.save() # 方法三: User.objects.create(name='我爱中国3',age=1997,) # 方法四: User.objects.get_or_create(name='我爱中国4', age=1998) # 如果有重复数据不再插入 return HttpResponse('插入数据成功!!!')
运行结果


2.查找数据:
mo_xin/urls.py
from django.urls import path
from mo_xin import views
urlpatterns = [
path('index2/', views.search_user),
]
mo_xin/views.py
from mo_xin.models import User
from django.http import HttpResponse
def search_user(request):
# 查询所有记录对象
rs = User.objects.all()
print(rs)
# 查询一个记录对象
rs = User.objects.get(id=1)
print(rs)
# 获取满足条件的对象
rs = User.objects.filter(name='我爱中国1')
print(rs)
return HttpResponse('查询数据成功!!!')
运行结果


3.修改数据:
mo_xin/urls.py
from django.urls import path
from mo_xin import views
urlpatterns = [
path('index3/', views.update_user),
]
mo_xin/views.py
from mo_xin.models import User
from django.http import HttpResponse
def update_user(request):
rs = User.objects.get(name='我爱中国2')
rs.name = '我爱中国22'
rs.save()
User.objects.filter(name='我爱中国3').update(name='我爱中国33')
User.objects.all().update(age=2020)
return HttpResponse('更新数据成功!!!')
运行结果


4.删除数据:
mo_xin/urls.py
from django.urls import path
from mo_xin import views
urlpatterns = [
path('index4/', views.delete_user),
]
mo_xin/views.py
from mo_xin.models import User
from django.http import HttpResponse
def delete_user(request):
User.objects.get(u_id=16).delete()
return HttpResponse('删除数据成功!!!')
运行结果

暂时不写:
创建一个管理员用户moran账号,密码为 moran123: CREATE USER 'moran'@'%'IDENTIFIED BY 'moran123'; 给这个用户授予所有远程访问,这个用户主要用于管理整个数据库,备份,还原等操作。 GRANT ALL ON *.* TO 'moran'@'%'; 使授权立即生效: FLUSH PRIVILEGES;
数据库相关接口 QuerySet Api
1.从数据库中查询出来的结果一般是一个集合,这个集合叫做 QuerySet. 2.QuerySet是可迭代对象. 3.QuerySet支持切片, 不支持负索引. 4.可以用list强行将QuerySet变成列表.

浙公网安备 33010602011771号