Django ----- app 和 ORM的操作和介绍

说明一下  GET 和 POST 的区别:
        1, GET 
                ①获取一个页面
                ②提交数据  数据显示在URL   ?user=alex&pwd=alexdsb
        2,POST
                from 表单提交数据  数据不显示

创建APP

 创建APP 有两种方式

 一、 命令行创建APP文件:

python manage.py startapp app01

执行命令后 项目目录下会多出一个app文件

 

二、 也可以用pycharm来创建app文件

1. Django项目创建后追加app:

  可以使用Pycharm的manage.py工具来执行命名.在主菜单中选择Tools,在下拉菜单中选择Run manage.py Task

  

 

在弹出的命令窗口中直接输入命令就可以创建好app

startapp app01

2,在创建Django项目时,建立app

在Application name 中添加上要创建的名字即可

 

orm介绍

一、 ORM的概念

    对象关系映射(Object Relational Mapping,简称ORM)模式是一种为了解决面向对象与关系数据库存在的互不匹配的现象的技术。

    简单的说,ORM是通过使用描述对象和数据库之间映射的元数据,将程序中的对象自动持久化到关系数据库中。

    ORM在业务逻辑层和数据库层之间充当了桥梁的作用。

二、 ORM由来

    让我们从O/R开始。字母O起源于"对象"(Object),而R则来自于"关系"(Relational)。

    几乎所有的软件开发过程中都会涉及到对象和关系数据库。在用户层面和业务逻辑层面,我们是面向对象的。

    当对象的信息发生变化的时候,我们就需要对象的信息保存在关系数据库中。

    按照之前的方式来进行开发就会出现程序员会在自己的业务逻辑代码中夹杂很多SQL语句用来增加、读取、修改、删除相关

    数据,而这些代码通常都是极其相似或者重复的。

三、ORM的优势和劣势

   优势:

      ORM解决的主要问题是对象和关系的映射。它通常将一个类和一张表一一对应,类

      的每个实例对应表中的一条记录,类的每个属性对应表中的每个字段。 

      ORM提供了对数据库的映射,不用直接编写SQL代码,只需操作对象就能对数据库操作数据。

      让软件开发人员专注于业务逻辑的处理,提高了开发效率。

   劣势:      

      ORM的缺点是会在一定程度上牺牲程序的执行效率。

      ORM的操作是有限的,也就是ORM定义好的操作是可以完成的,一些复杂的查询操作是完成不了。

      ORM用多了SQL语句就不会写了,关系数据库相关技能退化...

四、 ORM的总结:    

      ORM只是一种工具,工具确实能解决一些重复,简单的劳动。这是不可否认的。

      但我们不能指望某个工具能一劳永逸地解决所有问题,一些特殊问题还是需要特殊处理的。

      但是在整个软件开发过程中需要特殊处理的情况应该都是很少的,否则所谓的工具也就失去了它存在的意义

orm的操作

创建项目!!!!

  

Django 中默认的数据库是用的db.sqlite3 (ACID的关系型数据库管理系统,它包含在一个相对小的C库中);

更改这个默认的数据库为指定的MySQL数据就需要重新配置主文件夹中的settings.py 配置文件:

Django项目中使用Mysql数据库

  1,在Django项目中的srttings.py文件中,配置数据库连接信息:

  

DATABASES = {
    "default": {
        "ENGINE": "django.db.backends.mysql",
        "NAME": "你的数据库名称",  # 需要自己手动创建数据库
        "USER": "数据库用户名",
        "PASSWORD": "数据库密码",
        "HOST": "数据库IP",
        "POST": 3306
    }
}

  2.在与Django项目同名的目录下的 __init__.py文件中写如下代码,告诉Django使用pymysql模块连接Mysql数据库:

引入pymysql文件时 要确定 已经下载了pymysql这个包  ( pip install pymysql   (终端执行))

import pymysql

pymusql.install_as_MYSQLdb()

  注意! 数据库迁移的时候出现一个警告:

  

WARNINGS: 
?: (mysql.W002) MySQL Strict Mode is not set for database connection 'default'
HINT: MySQL's Strict Mode fixes many data integrity problems in MySQL, such as data truncation upon insertion, by escalating warnings into errors. It is strongly recommended you activate it.

  在配置中多加一个OPTIONS参数 : 

 'OPTIONS': {
    'init_command': "SET sql_mode='STRICT_TRANS_TABLES'"},

            model

在Django中model是你数据的单一、明确的信息来源。它包含了你存储的数据的重要字段和行为。通常,一个模型(model)映射到一个数据库表。

基本情况:

  • 每个模型都是一个Python类,它是django.db.models.Model的子类。
  • 模型的每个属性都代表一个数据库字段。
  • 综上所述,Django为您提供了一个自动生成的数据库访问API,详询官方文档链接

1,创建数据库的表:

  

# 1, 在APP文件夹中找到 models.py文件夹;  
# 2, 导入该模块
from django.db import models 

class Userinfo(models.Model):  # 3, 继承该类, 
    user = models.CharField(max_length=32)  # varchar(32) # 4, 添加字段
    pwd = models.CharField(max_length=32)                        # 4, 添加字段

    def __str__(self):
        return self.user

# 5, 数据库迁移 执行两条命令:
  python manage.py makemigrations # 把models.py的变化记录下来 
             python manage.py migrate           # 去修改你的数据库

2,获取表中的数据,以及插入数据:

# 使用数据库中的数据往往是在视图函数中的需求, 所以需要在 APP文件中的 view.py中使用

from app01 import models # 从自己的app01的包中导入 models 模块. 该模块创建了字段

models.Userinfo.objects.all() # 此方法是获取所有的数据

models.Userinfo.objects.get(user='Fush') # 此方法获取一条字段user='Fush'的数据, 若没有符合条件的数据则报错, 如果有多条则也报错

models.Userinfo.objects.create(user='MJJ',pwd='XJJ') # 此方法是插入数据

猜你喜欢

转载自www.cnblogs.com/liuafan/p/9593562.html