django的ORM操作

 

ORM
  面向对象和关系型数据库一个映射 通过操作对象的方式数据库中的数据

映射关系:
     类 _> 表
     对象 _> 数据行 (记录)
     属性 _> 字段

ORM能做的操作:
    1. 操作数据表
    2. 操作具体数据

django使用mysql数据库的流程:

1. 创建一个mysql数据库;

2. 配置

DATABASES = {
                    'default': {
                        'ENGINE': 'django.db.backends.mysql',  # 引擎
                        'NAME': 'py24',                        # 数据库名称
                        'HOST': '127.0.0.1',                # IP
                        'PORT': 3306,                        # 端口
                        'USER': 'root',                        # 用户名
                        'PASSWORD': '',                     # 密码
                    }
                }

3. 告诉django使用pymysql模块连接mysql数据库

  在与settings同级目录下的__init__文件中写:

import pymysql
pymysql.install_as_MySQLdb()

如果没有安装pymysql,使用pip install pymysql

如果报错如下:

 

 打开:https://pypi.org/project/pip/

点击:

右击-链接另存为:

下载下来后,复制到python环境中:

按住shift+右键  在此处打开命令窗口。

4. 在app下的models.py中写类(models.Model):

class User(models.Model):   #要继承models.Model
    name = models.CharField(max_length=32) # varchar(32)
    pwd = models.CharField(max_length=32) # varchar(32)

5. 执行数据库迁移的命令
python manage.py makemigrations # 保存每个APP下models的变更记录
python manage.py migrate # 将models的变更记录同步到数据库中

注意:python manage.py makemigrations:他会在你的上面每个app中的modules检查你是否有变化,你如果有变化,他都会把变化的内容存放到你自己的0001_initial.py中,如果你不注册这个app,那他就跳过了。

 

 

点击pycharm右面的database,选择链接mysql

第一次要下载这个驱动。

 

表的名字默认是app01_类名

出现这个才表示数据已经插入到数据库中。

 

那现在我们就不在写死了,我们要使用ORM去数据库里查询一下

from django.shortcuts import render, HttpResponse, redirect
from app01 import models

# Create your views here.

def index(request):
    return HttpResponse('<h1>o98K</h1>')


def login(request):
    err_msg = ''
    # print(request.method,type(request.method))
    if request.method == 'POST':
        # 获取提交的数据
        # print(request.POST)  #这个是一个字典,如下:你可以用[]取值,你也可以用get  用get的好处是不会报错,并且你可以指定错误信息,如果报错默认是一个None
        user = request.POST.get('user')   #获取输入的用户名 
        password = request.POST.get('pwd')  #获取输入的密码
        # print(user,type(user)) #alex
        # if user == 'alex' and pwd == 'alexdsb':
        print(models.User.objects.filter(name=user,pwd=password)) #<QuerySet [<User: User object>]>  这个是一个对象列表
        if models.User.objects.filter(name=user,pwd=password):   #models.User表示那个类 objects是固定的写法 filter表示你要在这个里面查询你符合条件的数据 name表示数据库的字段 user表示上面获取出来的用户名。 pwd表示数据库的字段 password表示上面获取的密码
            
            # return redirect('https://www.baidu.com')
            return redirect('/index/')
        else:
            err_msg = '用户名或密码错误'
    return render(request, 'login.html', {'err_msg': err_msg})

 

posted @ 2019-02-17 13:21  小菜鸟111  阅读(252)  评论(0编辑  收藏  举报