zoukankan      html  css  js  c++  java
  • Day 61 Django第二天 (orm数据库操作)

    一、get请求和post请求

    GET请求:

    1. 浏览器请求一个页面
    2. 搜索引擎检索关键字的时候

    POST请求:
    1. 浏览器向服务端提交数据,比如登录/注册等

     

    二 、 Django中的APP:

    什么是APP?以及为什么要用APP?

    project --> 项目 (老男孩教育大学校)

    APP --> 应用 (Linux学院/Python学院/大数据学院/Java学院)

    方便我们在一个大的Django项目中,管理实现不同的业务功能.

    1. 创建APP的命令
    1. 命令行,在Django项目的根目录输入:
    python3 manage.py startapp app名字

     

    三 、 ORM

    ORM:
    优点:
    1. 简单,不用自己写SQL语句
    2. 开发效率高
    缺点:
    1. 记忆你这个特殊的语法
    2. 相对于大神些的SQL语句,肯定执行效率有差距

    ORM的对应关系:
    类 ---> 数据表
    对象 ---> 数据行
    属性 ---> 字段

    ORM能做的事儿:
    1. 操作数据表 --> 创建表/删除表/修改表
    操作models.py里面的类

    2. 操作数据行 --> 数据的增删改查


    不能创建数据库,自己动手创建数据库

    使用Django的ORM详细步骤:
      1. 自己动手创建数据库
      create database 数据库名;
      2. 在Django项目中设置连接数据库的相关配置(告诉Django连接哪一个数据库)
      # 数据库相关的配置
      DATABASES = {
      'default': {
      'ENGINE': 'django.db.backends.mysql', # 连接的数据库类型
      'HOST': '127.0.0.1', # 连接数据库的地址
      'PORT': 3306, # 端口
      'NAME': "day61", # 数据库名称
      'USER': 'root', # 用户
      'PASSWORD': '123456' # 密码
      }
    }
      3. 告诉Django用pymysql代替默认的MySQLDB 连接MySQL数据库
      在项目/__init__.py文件中,写下面两句:
      import pymysql
      # 告诉Django用pymysql来代替默认的MySQLdb
      pymysql.install_as_MySQLdb()
      4. 在app下面的models.py文件中定义一个类,这个类必须继承models.Model
      class 类名(models.Model):
      ...
      5. 执行两个命令
      1. python3 manage.py makemigrations
      2. python3 manage.py migrate


      ORM单表的增加和查询:
      1. 查询
      models.UserInfo.objects.all()

      2. 增加
      models.UserInfo.objects.create(name="张三")

     一、创建表

    1.  自己动手创建数据库

    create database day61
    create table userinfo(id int auto_increment primary key varchar(10) not null ,pwd varchar(18) not null


    2. 在Django项目中设置连接数据库的相关配置(告诉Django连接哪一个数据库)

    # 数据库相关的配置
    DATABASES = {
    'default': {
    'ENGINE': 'django.db.backends.mysql', # 连接的数据库类型
    'HOST': '127.0.0.1', # 连接数据库的地址
    'PORT': 3306, # 端口
    'NAME': "day61", # 数据库名称
    'USER': 'root', # 用户
    'PASSWORD': '123456' # 密码
    }
    }

    在setting文件夹下做如下配置

    DATABASES = {
        'default': {
            # 'ENGINE': 'django.db.backends.sqlite3',
            # 'NAME': os.path.join(BASE_DIR, 'db.sqlite3'),
    
            #连接数据库类型
            'ENGINE':'django.db.backends.mysql',
            ##连接数据库的地址
            'HOST':'127.0.0.1',
            ##数据库名称
            'NAME':'day61',
            #用户
            'USER': 'root',
            #密码 
            'PASSWORD':'123456'
    
        }
    }

     

    3. 告诉Django用pymysql代替默认的MySQLDB 连接MySQL数据库

    在init文件下写代码 

    import pymysql
    pymysql.install_as_MySQLdb()

    4. 在app下面的models.py文件中定义一个类,这个类必须继承models.Model

    在module文件下添加

    from django.db import models
    
    # Create your models here.
    
    #ORM 相关的只能写在这个文件中,写到别的文件里Django找不到.
    
    class UserInfo(models.Model):
        id = models.AutoField(primary_key= True)#创建一个自增的主键字段
        name =models.CharField(null=False,max_length=32)#创建一个varchar(20)类型的不能为空的名字字段
    

     

    5. 执行两个命令

    1. python3 manage.py makemigrations
    2. python3 manage.py migrate
    

      

    查看表格 在mysql数据库里

    c         

    、删除表 

     把下面的语句注释掉然后执行 那两个语句
    class UserInfo(models.Model):
        id = models.AutoField(primary_key= True)#创建一个自增的主键字段
        name =models.CharField(null=False,max_length=32)#创建一个varchar(20)类型的不能为空的名字字段
    1. python3 manage.py makemigrations
    2. python3 manage.py migrate
    记录在了小本本 里



    三、改表

    修改class userinfo 的代码在执行两个指令

    四、添加数据

     

    五、表单操作之列表展示

    在django project中url里添加数据

    from app01 import views
    
    
    urlpatterns=[
        # url(r'^yimi/',yimi),
        # url(r'^xiaohei/',xiaohei),
        url(r'^index/',views.index),
        # url(r'^user_list/',user_list)
        url(r'^user_list/',views.user_list)
    ]
    

     在app01的views 里添加

    from django.shortcuts import HttpResponse, render
    from app01 import  models
    def user_list(request):
        #去数据库中查询所有的用户
        #利用orm这个工具去查询数据库,不用自己去查询
        ret = models.UserInfo.objects.all()
        print(ret[0].id,ret[0].name)
        #打开user_list.html文件
        return render(request,'user_list.html',{'user_list':ret})
        
    

      

    在建一个html文件 

     

    展示 

  • 相关阅读:
    字符串replaceAll()方法报错:java.util.regex.PatternSyntaxException:Unclosed group near index...
    eclipse导入Tomcat8源码
    [白话解析] 深入浅出朴素贝叶斯模型原理及应用
    [白话解析] 深入浅出一致性Hash原理
    [白话解析] 深入浅出贝叶斯定理
    [白话解析] 深入浅出边缘计算
    [梁山好汉说IT] 用实例来深入理解容器概念
    [梁山好汉说IT] 梁山好汉和抢劫银行
    [梁山好汉说IT] 梁山好汉和秒杀系统
    [梁山好汉说IT] 区块链在梁山的应用
  • 原文地址:https://www.cnblogs.com/mengbin0546/p/8967525.html
Copyright © 2011-2022 走看看