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. 算法竞赛入门经典第二版 回文词P49

    #include<bits/stdc++.h> using namespace std; char rev[]="A 3 HIL JM O 2TUVWXY51SE Z 8 &qu ...

  2. 路飞-celery框架

    Celery 官方 Celery 官网:http://www.celeryproject.org/ Celery 官方文档英文版:http://docs.celeryproject.org/en/la ...

  3. Custom LED Keychain, Small And Surefire Gifts

    The    LED Keychain    makes it easy for people to carry their keys with them and carry them with th ...

  4. 使用表单对象时,报错 form is undefine

    先看例子 <!DOCTYPE html> <html> <head> <meta charset="utf-8" /> <ti ...

  5. springmvc、 springboot 项目全局异常处理

    异常在项目中那是不可避免的,通常情况下,我们需要对全局异常进行处理,下面介绍两种比较常用的情况. 准备工作: 在捕获到异常的时候,我们通常需要返回给前端错误码,错误信息等,所以我们需要手动封装一个js ...

  6. python入门(十九讲):多进程

    1.进程概念 进程(Process)是计算机中的程序关于某数据集合上的一次运行活动.是系统进行资源分配和调度的基本单位,是操作系统结构的基础. 狭义定义:进程是正在运行的程序的实例. 在早期面向进程设 ...

  7. Flask 教程 第十五章:优化应用结构

    本文翻译自The Flask Mega-Tutorial Part XV: A Better Application Structure 这是Flask Mega-Tutorial系列的第十五部分,我 ...

  8. jquery点击添加样式,再次点击移除样式

    $("#divSetting").on("click", function () { $(this).toggleClass("open") ...

  9. python如何用sqlalchemy操作数据库

    工具:mysql  python sqlalchemy ---------------------------------------- 准备工作: 1.安装mysql 如果是window环境请参考 ...

  10. python+matplotlib制作雷达图3例分析和pandas读取csv操作

    1.例一 图1 代码1 #第1步:导出模块 import numpy as np import matplotlib.pyplot as plt from matplotlib import font ...