ORM的优点:(1)简单,不用自己写SQL语句

       (2)开发效率高

ORM的缺点:对于不同的人写的代码,执行效率有差别

ORM的对应关系:

  类  ----------》  数据表

  对象-----------》数据行

  属性-----------》字段

ORM能做的事:

(1)操作数据表 --》创建表/删除表/修改表

(2)操作数据行 --》数据的增删查改

但是ORM不能创建数据库,需要自己动手创建数据库

使用Django中的ORM详细步骤:

1.手动创建数据库

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

3.Django框架中用pymysql代替默认的MySQLDB连接MySQL数据库

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

5.执行两个命令

(1)python3 manage.py makemigrations

(2)python3 manage.py migrate

具体实现如下:

1.手动创建数据库

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

在项目同名文件夹中的settings.py文件中找"DATABASES"一个变量,配置如下:

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

3.Django框架中用pymysql代替默认的MySQLDB连接MySQL数据库

在项目同名文件夹的__init__.py中添加如下:

import pymysql
# 告诉Django用pymysql来代替默认的MySQLDB,因为Mysqldb是支持python2,不支持python3
pymysql.install_as_MySQLdb()

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

ORM相关的只能写在这个文件里,写到别的文件里Django找不到

from django.db import models

# Create your models here.

class UserInfo(models.Model):
id=models.AutoField(primary_key=True) # 创建一个自增的主键字段
name=models.CharField(null=False,max_length=20) # 创建一个varchar类型的不能为空的字段,其中最大长度必须设置

5.执行两个命令

(1)python manage.py makemigrations

(2)python manage.py migrate

数据库中创建表的结果如下:

命令1:python manage.py makemigrations  将models.py里面的改动记录到对应模块里的migrations文件夹下面,例如:app02/migrations下

命令2:python manage.py migrate  把改动翻译成SQL语句去数据库执行

通过以上步骤,实现了通过ORM对表的创建,如果修改表结构的话,将对应表的类进行修改,重新运行两个命令即可。

Django框架之ORM对表结构操作的更多相关文章

  1. Django框架06 /orm多表操作

    Django框架06 /orm多表操作 目录 Django框架06 /orm多表操作 1. admin相关操作 2. 创建模型 3. 增加 4. 删除 5. 修改 6. 基于对象的跨表查询 7. 基于 ...

  2. Django框架05 /orm单表操作

    Django框架05 /orm单表操作 目录 Django框架05 /orm单表操作 1. orm使用流程 2. orm字段 3. orm参数 4. orm单表简单增/删/改 5. orm单表查询 5 ...

  3. django框架基础-ORM跨表操作-长期维护

    ###############    一对一跨表查询    ################ import os if __name__ == '__main__': os.environ.setde ...

  4. django框架基础-ORM单表操作-长期维护

    ###############    单表操作-添加数据    ################ import os if __name__ == '__main__': os.environ.set ...

  5. Django框架之ORM的相关操作(一)

    一.一般操作 from django.db import models import datetime # Create your models here. class Author(models.M ...

  6. Django框架之ORM的相关操作之分页(六)

    分页是每个项目必不可少要写的一个功能,该篇文章就将记录一下使用ORM写分页的过程. 假设我们的数据库里面需要显示一些数据,而这个表中的数据大约有几千条数据,那么我们不可能将所有的数据都显示出来,那么就 ...

  7. Django框架之ORM的相关操作之多对多三种方式(五)

    在之前的博客中已经讲述了使用ORM的多对多关系表,现在进行总结一下: 1.ORM自动帮助我们创建第三张表 2.手动创建第三张表,第三张表使用ForeignKey指向其他的两张表关联起来 3.手动创建第 ...

  8. Django框架之ORM的相关操作之一对一关系(四)

    ORM中一对一在当一张表的某一些字段查询的比较频繁,另外一些字段查询的不是特别频繁,那么就把不常用的字段单独拿出来做成一张表,然后通过一对一进行关联起来.举个例子:在我们登录某个账户的时候,一般会显示 ...

  9. Django框架之ORM的相关操作(二)

    模型类: class Commongity(models.Model): id=models.AutoField(primary_key=True) name=models.CharField(max ...

随机推荐

  1. rpm命令怎么指定安装位置

    rpm   -ivh    --prefix=路径      FILE.rpm

  2. selenium grid的使用

    Selenium grid是用来分布式执行测试用例脚本的工具,比如测试人员经常要测试多浏览器的兼容性,那就可以用到grid了. selenium grid的hub相当于一个接收脚本并分发脚本的角色,n ...

  3. L2-3 名人堂与代金券

    题解 这题的话,每一个人都要占一个排名,即使排名并列了. 对于最后一个排名来说,即使人数超过了指定的k,也要加入. 代码 #include <bits/stdc++.h> using na ...

  4. HDU4714 Tree2cycle 解题报告

    题意 给定一棵无根树,删除或连接一条边的代价为\(1\),求把树变为环的最小代价. 前置思路 如果删除了\(k\)条边,使得树变成\((k+1)\)条链,再用\((k+1)\)次连接操作把树变成一个环 ...

  5. 《E=MC2或一个思想的故事》

    思想是起点.一切行动都以萌芽状态孕藏在思想之中,以往所做过的一切均离不开思想. 他是个纯朴的人,喜欢在乡下静静地冥想. .而科学家们却非常清楚,那些最伟大的成就都是在静默中完成的.

  6. 使用js处理后台返回的Date类型的数据

    从后台返回的日期类型的数据,如果直接在前端进行显示的话,显示的就是一个从 1970-01-01 00:00:00到现在所经过的毫秒数,而在大多数业务中都不可能显示这个毫秒数,大多数都是显示一个正常的日 ...

  7. 利用Ajax实现数据的同步传输,从mysql中提取数据,通过echarts可视化

    如何将mysql数据库中的方式通过echarts可视化呢,以下面这个简单的例子向大家进行演示:   步骤一:mysql的创表和插入数据,当然这些数据也可以是你通过爬虫抓取的.     步骤二:   创 ...

  8. MFC单文档视图中嵌入GLFW窗口

    开始学习OpenGL由于有一段时间,但是glfw只有窗口区,虽然通过某种手段(移步这里)可以加入工具栏,但仍然无法作为一个标准的GUI,而直接在MFC或Qt里面使用OpenGL API感觉有诸多制肘, ...

  9. c++基础语法规则

    1,c++存储类:定义函数或者变量的生命周期     auto 关键字用于两种情况:声明变量时根据初始化表达式自动推断该变量的类型.声明函数时函数返回值的占位符. register 存储类用于定义存储 ...

  10. .NTE Core Web API Example

    Source from :https://www.codeproject.com/Articles/1260600/Speed-up-ASP-NET-Core-WEB-API-application- ...