• 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):
        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})
  • 相关阅读:
    ASP.NET----内置对象----Response
    Angular----样式
    C# 读取Excel文件数据
    Node.js
    MySQL----navicat for mysql(破解版)可视化数据库操作
    MySQL----MySQL数据库入门----第五章 多表操作
    MySQL----MySQL数据库入门----第四章 单表查询
    MySQL----MySQL数据库入门----第三章 添加、更新与删除数据
    字节跳动核心竞争力学习与思考
    入门技术管理者的思考
  • 原文地址:https://www.cnblogs.com/wangkaiok/p/10390824.html
Copyright © 2020-2023  润新知