十一,ORM的使用及数据库表结构的创建
1,ORM的介绍
①ORM的概念
对象关系映射(Object Relational Mapping,简称ORM)模式,是一种为了解决面向对象与关系型数据库存在的互补匹配的现象的技术。简单地说,ORM是通过使用描述对象和数据库之间的映射的元数据,将程序中的对象自动持久化到关系数据库中。ORM在业务逻辑层和数据库层之间充当了桥梁的作用。
②ORM的优势
提供了数据库的映射,不用直接编写SQL代码,只需操作对象就能对数据库操作数据。
③ORM的劣势
ORM在一定程度上牺牲了程序的执行效率。
ORM的操作是有限的,也就是ORM定义好的操作是可以完成的,一些复杂的查询操作是完成不了的。
ORM用多了写SQL语句的能力就会有所降低。
2,Django中的ORM
在Django中的model是数据的单一,明确的数据来源,它包含了储存数据的重要字段和行为。通常,一个模型(model)映射到一个数据库表。如下图:
3,环境
打开setting.py文件,找到如下图所示内容
即创建项目时,Django默认的文件数据库环境已配置好
4,在models.py文件中创建表
models.py文件
from django.db import models
# Create your models here.
# 一个类就是一张表,表名为User,有两列,一列为username,已列为password,
class User(models.Model):
username = models.CharField(max_length=32)
password = models.CharField(max_length=32)
5,Django的文件数据库
将数据库添加到可视化工具中,点住db.sqlite3,然后直接拖动到可视化中即可
如果提示缺少相应的驱动,点击download即可
但是需要的表却没有,所以接下来执行命令将User表创建到数据库中,即数据库迁移
完成后查看表
添加数据
6,使用数据库
在views.py中导入User,有两种方法,推荐用②
from app01.models import User # ①
from app01 import models # ②
先测试一下,在views.py文件中添加如下代码
def logon1(request):
# orm测试
from app01 import models
ret = models.User.objects.all() # 对象列表
for i in ret:
print(i, i.username, i.password)
return render(request, "logon1.html")
成功获取所要内容 。
将上个登录页面用上数据库
views.py中
from django.shortcuts import HttpResponse, render, redirect
from app01 import models
# Create your views here.
def index(request):
# 业务逻辑
# 返回结果
# return HttpResponse("hello word!") # 返回一个字符串
return render(request, "index.html") # 返回一个HTML页面
"""
def logon(request):
# print(request, type(request))
# 如果是get请求,返回logon.html页面
if request.method == "POST":
# return render(request, "logon.html")
# else:
# 如果是post请求
# 获取用户提交的用户名和密码
user = request.POST.get("user")
pwd = request.POST.get("pwd")
# 进行校验
# 校验成功就告知登录成功
if user == "hpl" and pwd == "123":
# return HttpResponse("<h1>欢迎您进入!<h1>")
# return redirect("/index/")
return render(request, "index.html")
# 校验失败还是返回logon.html页面
return render(request, "logon.html")
"""
def logon(request):
if request.method == "POST":
user = request.POST.get("user")
pwd = request.POST.get("pwd")
if models.User.objects.filter(username=user, password=pwd):
return render(request, "index.html")
return render(request, "logon.html")
def logon1(request):
# orm测试
ret = models.User.objects.all() # 获取所有对象列表
for i in ret:
print(i, i.username, i.password)
return render(request, "logon1.html")
项目启动后,输入正确的用户名和密码,登录成功!
十二,使用MySQL数据库
把上面的文件型数据库改成MySQL数据库
先去创建一个名为logon1的数据库。打开DOS命令窗口,然后输入如下图命令
去安装一下pymysq这个模块,再去settings.py中配置一下环境
在app01下的models.py文件夹中写model(因刚才写了,就不用再写,可以使用)
from django.db import models
# Create your models here.
# 一个类就是一张表,表名为User,有两列,一列为username,已列为password,
class User(models.Model):
username = models.CharField(max_length=32)
password = models.CharField(max_length=32)
执行数据库迁移命令
python manage.py makemigrations
python manage.py migrate
执行完后,去可视化,按如下图操作
完成后去重启项目,一样OK!
未完,待续。。。