第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变成列表.

 

posted @ 2020-03-31 23:46  faval  阅读(111)  评论(0)    收藏  举报