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


相关推荐

  • voliate关键字[通俗易懂]

    voliate关键字[通俗易懂]1.voliate简介在上一篇文章中我们深入理解了java关键字synchronized,我们知道在java中还有一大神器就是关键volatile,可以说是和synchronized各领风骚,其中奥妙,我们来共同探讨下.通过上一篇的文章我们了解到synchronized是阻塞同步的,在线程竞争激烈的情况下会升级为重量级锁。而voliate就可以说是java虚拟机提供的最轻量级的同步锁。但它同时…

    2022年4月29日
    85
  • 常见几种java排序算法

    常见几种java排序算法1.插入排序publicclassInsertSort{publicstaticvoidsort(int[]arr){if(arr.length>=2){for(inti=1;i<arr.length;i++){//挖出一个要用来插入的值,同时位置上留下…

    2022年6月16日
    39
  • 回合制页游

    回合制页游之战斗系统 回合制是游戏的一种方式 全称为回合制策略游戏 所有的玩家轮流自己的回合 只有自己的回合 才能够进行操纵 回合制分类 l 战棋类游戏 nSLG 角色扮演因素较少 战斗以整体策略为主 nSRPG 角色扮演因素为主 战斗为回合制 通常己方人员较少 特别依靠培养系统铸造的强人 l 半即时制 使用行动点数系统 行动点数基于角色行动需要

    2026年3月20日
    2
  • Linux修改文件名(修改主机名)

    Linux修改文件名(修改主机名)本次使用的是 CentOS7 3 版本和 mysql5 7 的版本 永久修改 1 hostnameset hostname 主机名 例如 hostnamectls hostnamejimm vi etc hostname 直接在里面写上主机名保存退出 3 重启 Linux reboot f 上面两种修改其实是一样的 只是操作不一 主机名

    2026年3月17日
    2
  • c++全局变量与静态变量「建议收藏」

    c++全局变量与静态变量「建议收藏」概述:全局变量和和由static修饰的静态变量都被储存在全局数据区。全局数据区的内存在程序运行时会被全部置’0′.这不同于局部变量,局部变量在栈上分配内存,但此块内存一般不为零,且编译器不会在局部变量被声明的地方为其置’0′,除非申明时对其初始化值为0.全局变量:申明在main函数外的变量被编译器视为全局变量。即其在整个文件的任何地方都可以使用它。对于其他源文件来说,全局变量…

    2022年5月13日
    41
  • anaconda集成环境下,用pycharm运行代码不显示任何结果也不报错的一系列问题

    anaconda集成环境下,用pycharm运行代码不显示任何结果也不报错的一系列问题卸载 anaconda 和 pycharm 后 如果 C Users Username anaconda3 文件夹还在 就把它删了 然后打开注册表编辑器 运行 Regedit 计算机 HKEY CURRENT USER SOFTWARE Python 把这个文件夹删除 重启电脑 先安装 anaconda 再安装 pycharm Pycharm 打开要运行的项目 如果提示在程序目录找不到 import 的包 就在项目里重新添加包

    2026年3月27日
    1

发表回复

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

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