Django 模型_django反向生成model

Django 模型_django反向生成model前言随着项目越来越大,采用写原生SQL的方式在代码中会出现大量的SQL语句,那么问题就出现了:1.SQL语句重复利用率不高,越复杂的SQL语句条件越多,代码越长。会出现很多相近的SQL语句。2.

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE使用 1年只要46元 售后保障 童叟无欺

前言

随着项目越来越大,采用写原生SQL的方式在代码中会出现大量的SQL语句,那么问题就出现了:

  • 1.SQL语句重复利用率不高,越复杂的SQL语句条件越多,代码越长。会出现很多相近的SQL语句。
  • 2.很多SQL语句是在业务逻辑中拼出来的,如果有数据库需要更改,就要去修改这些逻辑,这会很容易漏掉对某些SQL语句的修改。
  • 3.写SQL时容易忽略web安全问题,给未来造成隐患。SQL注入。

所以我们采用ORM模型
 

ORM模型介绍

orm全称Object Relational Mapping,中文叫做对象关系映射,通过ORM我们可以通过类的方式去操作数据库,而不用再写原生的SQL语句。通过把表映射成类,把行作实例,把字段作为属性,ORM在执行对象操作的时候最终还是会把对应的操作转换为数据库原生语句
 

ORM的优点

  • 易用性:使用ORM做数据库的开发可以有效的减少重复SQL语句的概率,写出来的模型也更加直观、清晰。
  • 性能损耗小:ORM转换成底层数据库操作指令确实会有一些开销。但从实际的情况来看,这种性能损耗很少(不足5%),只要不是对性能有严苛的要求,综合考虑开发效率、代码的阅读性,带来的好处要远远大于性能损耗,而且项目越大作用越明显。
  • 设计灵活:可以轻松的写出复杂的查询。
  • 可移植性:Django封装了底层的数据库实现,支持多个关系数据库引擎,包括流行的MySQLOraclePostgreSQLSQLite。可以非常轻松的切换数据库。
    Django 模型_django反向生成model
     

ORM的实现过程

(1)配置目标数据库,在setting.py中设置配置属性

(2)构建虚拟对象数据库,在App的model.py文件中以类的形式定义模型

(3)通过模型在目标数据库中创建对象的数据表

(4)在视图函数中使用模型来实现目标数据库的读写操作

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/165050.html原文链接:https://javaforall.net

(0)
上一篇 2022年7月29日 上午11:46
下一篇 2022年7月29日 上午11:46


相关推荐

  • shell日期循环[通俗易懂]

    shell日期循环[通俗易懂]1. vitest.sh2.#!/bin/shstartdate=`date-d”$1″+%Y-%m-%d`enddate=`date-d”$2″+%Y-%m-%d`while[[$startdate<$enddate]]doecho"########$startdate#########"startdate=`dat

    2022年7月24日
    8
  • Imagination光线追踪创意赛顺利落幕 冠军喜获万元大奖

    Imagination光线追踪创意赛顺利落幕 冠军喜获万元大奖4 月 20 日 历时 4 个月的 ImaginationO 光线追踪 全球开发创意赛顺利落下帷幕 在经历报名 提交作品 专家评审等环节后 Imagination 在北京向冠军获得者胡

    2025年11月13日
    6
  • 一起学JAVA 接口 面向接口开发

    一起学JAVA 接口 面向接口开发接口 1 接口的概念接口 英文 Interface 在 JAVA 编程语言中是一个抽象类型 是抽象方法的集合 接口通常以 interface 来声明 一个类通过继承接口的方式 从而来继承接口的抽象方法 接口并不是类 编写接口的方式和类很相似 但是它们属于不同的概念 类描述对象的属性和方法 接口则包含类要实现的方法 除非实现接口的类是抽象类 否则该类要定义接口中的所有方法 接口无法被实例化 但是可以被实现 一个实现接口的类 必须实现接口内所描述的所有方法 否则就必须声明为抽象类 另外 在 Java 中 接口

    2026年3月17日
    3
  • 豆包大模型 Seed 2.0,有点不一样

    豆包大模型 Seed 2.0,有点不一样

    2026年3月12日
    2
  • sudo 出现unable to resolve host 解决方法

    sudo 出现unable to resolve host 解决方法Ubuntu 环境 假设这台机器名字叫 abc 机器的 hostname 每次执行 sudo 就出现这个警告讯息 sudo unabletoreso 虽然 sudo 还是可以正常执行 但是警告讯息每次都出来 而这只是机器在反解上的问题 所以就直接从 etc hosts 设定 让 abc hostname 可以解回 127 0 0 1 的 IP 即可 et

    2026年3月18日
    2
  • Allegro PCB转换成PADS方法

    Allegro PCB转换成PADS方法Cadence 很强大 PADS 很方便 很多企业都在用这两个 EDA 软件 有的人习惯 Cadence 有的人习惯 PADS 有些公司用 Cadence 有些公司用 Pads 有时我们需要将两种软件格式的 PCB 和原理图相互转换 下面是将 CadenceAlleg 的 PCB 文件转化为 PADS 的 PCB 文件的方法 Cadence16 6 PADSVX 0 一 添加用户变量 1 变量名 AEX BIN ROOT 值 PADS 软件中 translators 软件的 bin 目录路径比如我的

    2026年3月18日
    2

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号