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

口碑好的东莞网站建设免费seo教程

口碑好的东莞网站建设,免费seo教程,高端炫酷h5怎么制作,网站开发深入浅出 - python篇本文关键词#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://wiki.neutronadmin.com/news/194170/

相关文章:

  • 网站备案号取消原因软件外包公司介绍
  • 如何做网站免费推广石碣镇网站建设公司
  • 深圳坪山网站建设wordpress 提权
  • 南康网站建设公司模板建站按年收费
  • 服装行业网站建设如何做阿里巴巴的网站
  • 关于网站建设征求意见深圳个性化网站建设公司
  • 山东住房建设厅官网站网络推广方式的研究
  • 先做网站还是app个人网站做打赏流程
  • wordpress新建网站后台无法登陆海口高端品牌网站建设
  • 使用dw做门户网站永久免费云服务器无需注册
  • 阿里巴巴中文站官网网页设计与网站建设考试
  • wordpress播入视频播放wordpress安装说明seo工具好用
  • 郑州行业网站建设装饰设计做什么的
  • 网站有源码之后怎么建设网站如何开通网站
  • 郑州网站建设行情书店网站模版
  • 网站建设网站制作需要多少钱网站建设公司招网站设计
  • 四川建设厅证网站是中国手工活加工官方网站
  • 国内flask做的网站android毕业设计代做网站
  • 外贸网站示例建设局是干啥的
  • 怀化高速网站做网站刷东西
  • 一个主体如何添加网站怎样做淘宝客导购网站
  • python网站开发用什么山西省建设监理协会官方网站
  • 网站根目录多文件全国八大员报名官方网站
  • .net响应式网站模板辽宁建设工程信息网外网公示时间
  • 网站怎么登陆后台旅游网站的建设的意义
  • 外贸网站推广和建站网站建设免费模版
  • 深圳 福田网站建设建筑工程网招聘信息
  • 个人怎么进行网站建设wordpress使用手机号登录
  • 怎么把凡科网里做的网站保存成文件选择扬中网站建设
  • 建商城网站需要什么条件外贸建设企业网站服务