当前位置: 首页 > news >正文

太原网站排名外包开滦建设集团网站

太原网站排名外包,开滦建设集团网站,wordpress pods插件,北京宏福建设有限公司网站本文关键词#xff1a;Python、Django、ORM。 概要 在 Python Web 开发中#xff0c;ORM#xff08;Object-Relational Mapping#xff0c;对象关系映射#xff09;是一个非常重要的概念。ORM 框架可以让我们不用编写 SQL 语句#xff0c;就能够使用对象的方式来操作数据… 本文关键词Python、Django、ORM。 概要 在 Python Web 开发中ORMObject-Relational Mapping对象关系映射是一个非常重要的概念。ORM 框架可以让我们不用编写 SQL 语句就能够使用对象的方式来操作数据库大大提高了代码的可读性和可维护性。Django 作为一款流行的 Web 框架自带了强大的 ORM 框架。 本文将会详细介绍 Django 的 ORM 框架包括基本使用方法、高级查询、性能优化等方面。 1. 基本使用方法 1.1 定义模型类 在 Django 里可以使用模型类来定义数据库表。模型类需要继承自 django.db.models.Model并且定义表的各个字段。例如下面是一个简单的模型类用来表示一个博客文章 from django.db import modelsclass Blog(models.Model):title  models.CharField(max_length100)content  models.TextField()pub_date  models.DateTimeField(auto_now_addTrue)上面的代码定义了一个 Blog 类来表示博客文章。这个类继承自 django.db.models.Model并且定义了三个字段标题、内容和发布日期。其中标题和内容都是字符串类型使用 CharField 和 TextField 来定义。pub_date 是一个日期时间类型使用 DateTimeField 来定义。auto_now_addTrue 表示在创建新记录时自动设置为当前时间。 1.2 创建表 定义完模型类之后我们需要创建对应的数据库表。在 Django 中可以使用 manage.py 命令来进行数据库迁移操作。具体来说我们需要执行以下两个命令 # 生成迁移文件 python manage.py makemigrations# 执行迁移操作 python manage.py migrate执行完上面的两个命令之后Django 会根据模型类自动生成对应的数据库表。 注意在进行迁移操作之前请确保已经仔细确认了所有相关设置和代码并且备份了数据。 1.3 插入数据 插入数据可以使用模型类来表示一条记录并且调用 save() 方法来将记录保存到数据库中。例如下面的代码演示了如何向 Blog 表中插入一条记录 blog  Blog(titleHello World, contentThis is my first blog post.) blog.save()1.4 查询数据 查询数据可以使用模型类的 objects 属性该属性是 Manager 类的实例提供了各种查询方法。例如从 Blog 表中查询所有记录 blogs  Blog.objects.all()for blog in blogs:print(blog.title, blog.content, blog.pub_date)1.5 更新数据 更新数据可以先查询出需要更新的记录然后修改对应的字段最后调用 save() 方法进行保存。例如将 Blog 表中所有记录的标题修改为 Hello Django blogs  Blog.objects.all()for blog in blogs:blog.title  Hello Djangoblog.save()1.6 删除数据 删除数据可以先查询出需要删除的记录然后调用 delete() 方法进行删除。例如删除 Blog 表中所有记录 blogs  Blog.objects.all()for blog in blogs:blog.delete()2. 高级查询 2.1 条件查询 Django 的 ORM 框架提供了非常方便的条件查询功能。例如查询 Blog 表中标题为 Hello World 的记录 blogs  Blog.objects.filter(titleHello World)for blog in blogs:print(blog.title, blog.content,blog.pub_date)可以看到我们使用了 filter() 方法来指定查询条件其中 titleHello World 表示标题等于 Hello World。filter() 方法返回一个 QuerySet 对象可以使用 for 循环遍历查询结果。 2.2 聚合查询 聚合查询可以使用 aggregate() 方法来实现。例如统计 Blog 表中记录的数量 from django.db.models import Countcount  Blog.objects.aggregate(Count(id)) print(count[id__count])可以看到我们使用了 aggregate() 方法来指定聚合操作其中 Count(id) 表示统计 id 字段的数量。aggregate() 方法返回一个字典其中键是聚合操作的名称例如id__count 表示统计数量值是聚合操作的结果。 2.3 连接查询 连接查询可以使用 select_related() 方法和 prefetch_related() 方法来实现。例如下面的代码演示了如何查询 Blog 表中的记录并且同时连接查询关联的 Author 表中的作者信息 class Author(models.Model):name  models.CharField(max_length50)class Blog(models.Model):title  models.CharField(max_length100)content  models.TextField()pub_date  models.DateTimeField(auto_now_addTrue)author  models.ForeignKey(Author, on_deletemodels.CASCADE)blogs  Blog.objects.select_related(author)for blog in blogs:print(blog.title, blog.content, blog.pub_date, blog.author.name)可以看到我们使用了 select_related(author) 方法来指定需要连接查询的外键字段即 author 字段这样就可以同时查询 Blog 表和 Author 表中的数据。注意select_related() 方法只能用于一对一和多对一关系的查询上面的例子是多对一关系。 2.4 原生 SQL 查询 Django 的 ORM 框架也支持原生 SQL 查询。例如使用原生 SQL 查询 Blog 表中的记录 from django.db import connectionwith connection.cursor() as cursor:cursor.execute(SELECT * FROM myapp_blog)blogs  cursor.fetchall()for blog in blogs:print(blog[1], blog[2], blog[3])可以看到我们使用了 connection.cursor() 方法来获取数据库连接的游标然后调用 execute() 方法执行 SQL 查询。最后使用 fetchall() 方法获取查询结果。 3. 性能优化 3.1 使用索引 索引是提高数据库查询性能的重要手段。在 Django 中可以使用 db_indexTrue 参数来为字段创建索引。例如为 title 字段创建索引 class Blog(models.Model):title  models.CharField(max_length100, db_indexTrue)content  models.TextField()pub_date  models.DateTimeField(auto_now_addTrue)3.2 批量操作 批量操作可以使用 bulk_create() 方法和 bulk_update() 方法来实现。例如下面的代码演示了如何批量插入 Blog 表中的记录 blogs  [Blog(titleBlog 1, contentContent 1),Blog(titleBlog 2, contentContent 2),Blog(titleBlog 3, contentContent 3), ]Blog.objects.bulk_create(blogs)可以看到我们使用了 bulk_create() 方法来批量插入记录其中 blogs 是一个包含多个 Blog 实例的列表。 3.3 延迟加载 延迟加载可以使用 defer() 方法和 only() 方法来实现。 使用 defer() 方法时Django 将不会立即从数据库中获取指定字段的数据。它会在需要访问这些字段的数据时再去查询数据库。这样可以避免一次性从数据库中取出大量的数据减轻数据库的负担提高查询效率。 使用 only() 方法可以指定只查询需要的字段而不是查询整个表的所有字段。这样可以减少数据传输的大小节省网络带宽和内存资源提高查询效率。 例如延迟加载 Blog 表中的记录并且只查询 title 和 pub_date 两个字段 blogs  Blog.objects.defer(content).only(title, pub_date)for blog in blogs:print(blog.title, blog.pub_date)可以看到我们使用了 defer(content) 方法来延迟加载 content 字段这样查询结果中就不会包含 content 字段的数据。同时使用 only(title, pub_date) 方法来指定只查询 title 和 pub_date 两个字段的数据。 3.4 缓存查询结果 缓存查询结果可以使用 Django 的缓存框架来实现。Django的缓存框架可以配置为使用不同的缓存后端下面是常见的几种缓存后端的配置方法 3.4.1 内存缓存 使用内存缓存作为缓存后端是最简单的配置方式它可以快速地缓存数据并且不需要额外的配置。在settings.py文件中进行如下配置 CACHES  {default: {BACKEND: django.core.cache.backends.locmem.LocMemCache,LOCATION: unique-snowflake,} }BACKEND 指定了缓存后端为内存缓存LOCATION 是一个可选的参数用于指定缓存的名称可以是任何字符串。 3.4.2 文件缓存 使用文件缓存作为缓存后端可以将缓存数据存储到文件系统中需要指定缓存文件的路径。在settings.py文件中进行如下配置 CACHES  {default: {BACKEND: django.core.cache.backends.filebased.FileBasedCache,LOCATION: /var/tmp/django_cache,} }BACKEND 指定了缓存后端为文件缓存LOCATION 是一个必选的参数用于指定缓存文件的路径。 3.4.3 Memcached 使用Memcached作为缓存后端可以将缓存数据存储到Memcached服务器中需要指定Memcached服务器的地址和端口号。在settings.py文件中进行如下配置 CACHES  {default: {BACKEND: django.core.cache.backends.memcached.MemcachedCache,LOCATION: 127.0.0.1:11211,} }BACKEND 指定了缓存后端为MemcachedLOCATION 是一个必选的参数用于指定Memcached服务器的地址和端口号。 3.4.4 Redis 使用Redis作为缓存后端可以将缓存数据存储到Redis服务器中需要指定Redis服务器的地址、端口号和数据库编号。在settings.py文件中进行如下配置 CACHES  {default: {BACKEND: django_redis.cache.RedisCache,LOCATION: redis://127.0.0.1:6379/0,OPTIONS: {CLIENT_CLASS: django_redis.client.DefaultClient,},} }BACKEND 指定了缓存后端为RedisLOCATION 是一个必选的参数用于指定Redis服务器的地址、端口号和数据库编号。OPTIONS 是一个可选的参数用于指定Redis客户端的选项这里使用默认选项。 需要注意的是在使用Redis作为缓存后端时需要额外安装 django-redis 库。可以使用pip命令进行安装 pip install django-redis例如缓存 Blog 表中的记录 from django.core.cache import cacheblogs  cache.get(blogs)if blogs is None:blogs  Blog.objects.all()cache.set(blogs, blogs, timeout3600)for blog in blogs:print(blog.title, blog.content, blog.pub_date)可以看到我们使用了 cache.get(blogs) 方法来从缓存中获取查询结果。如果缓存中不存在查询结果则使用 Blog.objects.all() 来查询数据库并且使用 cache.set(blogs, blogs, timeout3600) 方法将查询结果存入缓存中。其中timeout3600 表示缓存的过期时间为 3600 秒。 技术总结 本文详细介绍了 Django 的 ORM 框架包括基本使用方法、高级查询和性能优化等方面。ORM 框架可以让我们不用编写 SQL 语句就能够使用对象的方式来操作数据库大大提高了代码的可读性和可维护性。同时我们还介绍了一些性能优化技巧例如使用索引、批量操作、延迟加载和缓存查询结果等。希望本文对你学习 Django 的 ORM 框架有所帮助 欢迎点赞收藏转发感谢
http://www.zqtcl.cn/news/233686/

相关文章:

  • 白银做网站视频制作软件下载安装
  • 商城网站建设最新报价现在网站建设的技术
  • 网站设计思路方案广东深圳软件开发公司
  • 企业网站可以免费做吗网站建设管理内容保障制度
  • 建立导购网站吴江区建设局网站
  • 东莞网站建设(信科分公司)青岛市北建设集团网站
  • 企业网站分类举例营销型网站建设市场
  • 自学app开发难吗长沙专业网站优化定制
  • 厦门做企业网站找谁wordpress4.7.10漏洞
  • 百科网站源码最好的免费logo设计网站
  • 北京做网站s如何做网站截流
  • 深圳摇号申请网站在线免费网站
  • 自己做网站用花钱吗广西建设四库一平台网站
  • 做网站建设一般多少钱做网站要买多少服务器空间
  • 天津网站优化哪家快惠民建设局网站是哪个
  • 大连做网站绍兴厂商商城网站数据库表关系设计
  • 公司网站制作第三方彭州做网站的公司
  • 青建设厅官方网站海省包装策划与设计专业
  • 中国城投建设集团网站手机网游
  • 通过音乐做网站外链企业所得税多少钱起征
  • 哪个网站系统做的好广州电子商城网站
  • 泉州模板建站定制成都网页设计培训机构
  • 个人微信公共号可以做微网站么免费产品推广软件
  • 建设银行瓶窑支行网站阿里域名官网
  • 宿迁网站seo中原建设信息网 网站
  • 地方网站域名用全拼建设银行网站怎么登录密码忘了怎么办
  • win7 iis7 添加网站秦皇岛 网站建设
  • 手机模板网站模板下载工具Wordpress elgg
  • 宠物网站建设的目的wordpress图创
  • 网站首页图片怎么更换浙江省建设政务网站