欢迎来到皮皮网官网

【小型网页源码】【免费棋牌源码搭建】【openstack swift源码下载】django源码orm

时间:2024-12-24 03:12:12 来源:表情包喝酒工具小程序源码

1.9、源码ORM介绍
2.Django中的源码orm是什么(2023年最新解答)

django源码orm

9、ORM介绍

       一 Django模型层之ORM介绍

       二 ORM的源码使用之模型

       三 ORM的使用之数据库迁移

       3.1 创建模型

       3.2 配置settings.py

       3.3 mysqlclient安装与兼容性问题

       3.4 数据库迁移命令

       3.5 模型字段的增、删、源码改

       3.6 加载django配置

       四 基本使用简介

       Django模型层之ORM介绍一 ORM是源码什么?为何要有ORM?

       我们在使用Django框架开发web应用的过程中,不可避免地会涉及到数据的源码小型网页源码管理操作(增、删、源码改、源码查),源码而一旦谈到数据的源码管理操作,就需要用到数据库管理软件,源码例如mysql、源码oracle、源码Microsoft SQL Server等。源码

       如果应用程序需要操作数据(比如将用户注册信息永久存放起来),源码那么我们需要在应用程序中编写原生sql语句,然后使用pymysql模块远程操作mysql数据库

       针对应用程序的数据操作,直接编写原生sql语句会存在两方面的问题,严重影响开发效率,如下

       为了解决上述问题,django引入了ORM的概念,ORM全称Object Relational Mapping,即对象关系映射,免费棋牌源码搭建是在pymysq之上又进行了一层封装,对于数据的操作,我们无需再去编写原生sql,取代代之的是基于面向对象的思想去编写类、对象、调用相应的方法等,ORM会将其转换/映射成原生SQL然后交给pymysql执行

       基于图2所示,有了ORM框架,开发人员既不用再去考虑原生SQL的优化问题,也不用考虑数据库迁移的问题,ORM都帮我们做了优化且支持多种数据库,这极大地提升了我们的开发效率,下面就让我们来详细学习ORM的使用吧

       二 ORM的使用之模型

       在django的ORM框架中,继承自django.db.models.Model的类称之为模型类,或简称模型。

       一个模型是关于你的数据,唯一的、决定性的信息源、它包含存储数据的基本字段和方法。

       通常,每个模型都映射到一个数据库表。模型中的openstack swift源码下载属性对应数据库表的字段

       如下所示:原生SQL与ORM的模型对应关系

       三 ORM的使用之数据库迁移

       3.1 创建模型

       数据来源于数据库的表,而ORM的模型类对应数据库表,所以若我们想操作数据,必须先创建模型。

       3.2 配置settings.py

       3.2.1 注册应用

       但凡涉及到数据库同步操作的应用,都需要事先在settings.py的INSTALLED_APPS中完成注册

       3.2.2 配置后端数据库

       django的orm支持多种数据库(如PostgreSQL、MySQL、SQLite、Oracle等),如果想将上述模型转为mysql数据库中的表,需要settings.py中配置DATABASES,如下

       强调!!!:在链接mysql数据库前,必须事先创建好数据库

       3.2.3 配置日志

       如果想打印orm转换过程中的sql,需要在settings中进行配置日志:

       3.3 mysqlclient安装与兼容性问题

       首先执行下述命令来创建一个迁移

       会抛出异常

       提示我们需要事先安装好mysqlclient,并且默认加载的mysqlclient是模块MySQLdb,需要安装MySQL-python,但目前python官方第三库中最新版MySQLdb 1.2.5对python解释器以及MySQL Server的支持如下,并不支持python3.0+

       为此,有人在github中创建了一个 MySQLdb1分支 来支持Cpython3.0+解释器,可以参照官网进行安装 pypi.org/project/mysqlc...

       除了使用MySQLdb作为MySQLclient之外,php个性qq源码我们还有可以使用pymysql

       比起前者,pymysql直接支持Cpython3.0+,安装简单

       但是因为Django默认加载的MySQLclient是MySQLdb,所以需要作出修改

       此时重新执行python manage.py makemigrations仍会抛出异常

       需根据上述异常提示的文件base.py路径打开文件,注释下述两行

       如果重新执行makemigrations命令,扔抛出异常

       需根据上述异常提示的operations.py文件路径打开文件,把行的decode修改为encode

       ps:PyPI(Python Package Index)是Python官方的第三方库,所有人都可以下载或上传Python库到PyPI。可以访问 pypi.org/,自行查看各个库的版本支持,

       3.4 数据库迁移命令

       最后在命令行中执行两条数据库迁移命令,即可在指定的数据库db1中创建表 :

       注意:当我们直接去数据库里查看生成的表时,会发现数据库中的表与orm规定的并不一致,这完全是正常的,事实上,orm的字段约束就是不会全部体现在数据库的表中,比如我们为字段gender设置的默认值default=1,去数据库中查看会发现该字段的default部分为null

       ,虽然数据库没有增加默认值,但是我们在使用orm插入值时,完全为gender字段插入空,orm会按照自己的约束将空转换成默认值后,再提交给数据库执行

       3.5 模型字段的增、删、改

       在表生成之后,php源码加密软件如果需要增加、删除、修改表中字段,需要这么做

       3.6 加载django配置

       在开发django项目时,如果我们想跳过django的启动与操作流程,只测试某一部分的代码的功能,需要首先引入django的配置环境才可以

       四 基本使用简介

       增加一条记录

       查询记录

       修改记录

       删除记录

Django中的orm是什么(年最新解答)

       导读:今天首席CTO笔记来给各位分享关于Django中的orm是什么的相关内容,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!

Django的orm中get和filter的不同

       Django的orm中get和filter的不同

       get得到的是一个model对象,filter得到的是一组model对象,类型是queryset,是一个django定义的,可迭代的,可以当作是一个list操作,每个索引都是一个model对象。get如果满足的条件大于一个的时候,会报错#有点类似于如下:get相当与fetchone()filter相当与fetchall()

       djangoorm和tornadoorm有什么区别

       Tornado是异步框架

       Tornado基本上只算有MVC中C这一层,而Django是大而全

       所以一般Django适合初学者或者小团队,Tornado适合高度定制。

Django框架是什么?

       Django是基于Python的免费和开放源代码Web框架,它遵循模型-模板-视图(MTV)体系结构模式。它由DjangoSoftwareFoundation(DSF)维护,这是一个由非营利组织成立的独立组织。

       Django的主要目标是简化复杂的,数据库驱动的网站的创建。该框架强调组件的可重用性和“可插入性”,更少的代码,低耦合,快速开发以及不重复自己的原则。整个过程都使用Python,甚至用于设置文件和数据模型。Django还提供了一个可选的管理创建,读取,更新和删除界面,该界面通过自省动态生成并通过管理模型进行配置。

       一些使用Django的知名网站包括公共广播服务,Instagram,Mozilla,华盛顿时报,Disqus,Bitbucket,和Nextdoor。

       Django创建于年秋天,当时《劳伦斯日报》世界报纸的网络程序员AdrianHolovaty和SimonWillison开始使用Python来构建应用程序。西蒙·威利森(SimonWillison)的实习期结束前不久,雅各布·卡普兰·莫斯(JacobKaplan-Moss)在Django的发展中就被聘用了。它于年7月在BSD许可下公开发布。该框架以吉他手DjangoReinhardt的名字命名。年6月,宣布新成立的Django软件基金会(DSF)将来将维护Django。

       年7月,与一些Django联合创始人和开发人员建立联系的软件咨询公司RevolutionSystems在劳伦斯举办了周年纪念活动。

       Django的设计理念如下:

       松耦合——Django的目标是使堆栈中的每个元素彼此独立。

       更少的编码——更少的代码,因此可以快速开发。

       不重复自己(DRY)——一切都应该只在一个地方开发,而不是一次又一次地重复。

       快速开发——Django的理念是尽一切可能促进超快速开发。

       简洁的设计——Django严格按照自己的代码维护简洁的设计,并易于遵循最佳的Web开发实践。

       Django的一些优势如下:

       对象关系映射(ORM)支持——Django在数据模型和数据库引擎之间建立了桥梁,并支持包括MySQL,Oracle,Postgres等在内的大量数据库系统。

       多语言支持——Django通过其内置的国际化系统支持多语言网站。因此,您可以开发支持多种语言的网站。

       框架支持——Django内置了对Ajax,RSS,缓存和其他各种框架的支持。

       GUI——Django为管理活动提供了一个很好的即用型用户界面。

       开发环境——Django带有轻量级的Web服务器,以促进端到端应用程序的开发和测试。

       Django是PythonWeb框架。和大多数现代框架一样,Django支持MVC模式。

       关于Python的基础问题可以看下这个网页的视频教程,网页链接,希望我的回答能帮到你。

djangoorm创建数据表

       Django里面,管理数据库和sqlarchemy类似,也是通过orm框架来实现的。所有的数据库的建立,都是在model.py里面通过类来实现的。

       首先看看如何创建一个单表:

       a.先定义一个类,继承models.Model,然后根据需求定义参数,这些参数的类型和变量后面会进一步阐述

       models.py

       from?django.db?import?models

       class?UserInfo(models.Model):

       username?=?models.CharField(max_length=)

       password?=?models.CharField(max_length=)

       b.注册app

       settings.py

       INSTALLED_APPS?=?[

       ‘django.contrib.admin‘,

       ‘django.contrib.auth‘,

       ‘django.contrib.contenttypes‘,

       ‘django.contrib.sessions‘,

       ‘django.contrib.messages‘,

       ‘django.contrib.staticfiles‘,

       ‘app‘,

       ]

       c.执行命令。第一条命令会生成一个初始化文件,第二个命令会生成对应的表

       python?manage.py?makemigrations

       python?manage.py?migrate

       这样,就在PyCharm自带的sqlite数据库里面成功的生成了一个app_UserInfo的表。这个表默认会有一个自增的id作为主键,另外两个字段是我们通过类创建的。

       d.如果希望使用mysql,因为Django默认使用了MySqldb模块,这个在3.0版本里面不存在,会直接报错。我们需要改为pymysql的模块,方法如下:

       在project同名文件夹下的__init__文件中添加如下代码即可:

       importpymysql

       pymysql.install_as_MySQLdb()

       2.对于单表的增删改查询

       查询

       获取所有结果,获取到的结果是一个QuerySet的类似列表的对象,每一个元素本身又是一个对象,包括了id,name,password等属性。

       obj?=?models.UserInfo.objects.all()

       QuerySet[UserInfo:UserInfoobject,UserInfo:UserInfoobject,UserInfo:UserInfoobject,UserInfo:UserInfoobject,UserInfo:UserInfoobject]

       可以通过filter进行过滤,相当于sql的where语句,因为结果也是QuerySet,因此需要再使用first()获取第一个值

       obj?=?models.UserInfo.objects.filter(id=nid).first()

       增加

       models.UserInfo.objects.create(username=u,password=p,user_group_id=3)

       删除,可以在filter的基础上进行删除

       models.UserInfo.objects.filter(id=nid).delete()

       修改,有两种常见方式

       第一个方式

       models.UserInfo.objects.filter(id=nid).update(username=u,password=p)

       第二个方式

       obj=models.UserInfo.objects.filter(id=nid)

       obj.username=u

       obj.save()

如何在django系统外使用django的ORM

       sqlalchemy使用上有两个层次,1是使用sqlexpression,说白可以让你用python写sql,2是它的orm,orm是使用session的,自行管理session生存期,自行在多个过程中传递session,自行管理事务。写法上是通常的transactionscript(java常说的贫血的domainmodel)模式。实际编码通常1和2混合编程。

       django通过中间件部分隐藏了连接/事务管理的概念,写法上也比较简单,接近java常说的充血的domainmodel.内容上也没有sqlalchemy的sqlexpression层次。易用性就体现出来了。

       不过用过的orm中,能达到sqlalchemy这样高度的orm,还没有在其他语言中看到。ruby有sequal,java的jooq都有部分sqlalchemy思想的影子。

       结语:以上就是首席CTO笔记为大家整理的关于Django中的orm是什么的全部内容了,感谢您花时间阅读本站内容,希望对您有所帮助,更多关于Django中的orm是什么的相关内容别忘了在本站进行查找喔。

copyright © 2016 powered by 皮皮网   sitemap