0


Tortoise ORM 和 Aerich 使用文档参考表

Tortoise ORM 和 Aerich 使用文档参考表

安装

操作命令说明安装 Tortoise ORM

  1. pip install tortoise-orm

安装 Tortoise ORM 库安装 Aerich

  1. pip install aerich

安装 Aerich 迁移工具

初始化配置

操作命令说明初始化 Aerich 配置

  1. aerich init -t your_settings_path_.TORTOISE_ORM

只需使用一次,初始化配置文件

数据库初始化

操作命令说明初始化数据库

  1. aerich init-db

一般情况下只需在第一次使用,初始化数据库表结构

数据迁移操作

操作命令说明数据迁移

  1. aerich migrate [--name]

执行数据迁移操作

  1. aerich migrate --name add_column

示例:标记本次迁移操作为 add_column

模型版本管理

操作命令说明升级模型版本

  1. aerich upgrade

更新数据模型版本降级模型版本

  1. aerich downgrade

回退数据模型版本查看迁移历史

  1. aerich history

查看历史迁移记录

Tortoise ORM 查询参数详细说明

方法描述示例查询

  1. get()

根据主键获取单条数据。如果数据不存在,将返回

  1. None

  1. Model.get(id=1)
  1. all()

查询所有数据,返回所有数据集(QuerySet 对象)。如果不加任何条件,它会返回表中的所有记录。

  1. Model.all()
  1. filter()

根据条件查询数据,返回满足条件的数据集(QuerySet 对象)。可以使用

  1. all()

方法获取所有的查询结果,或者使用

  1. first()

方法获取第一个结果。

  1. Model.filter(name='John')
  1. exclude()

排除满足条件的数据,返回不满足条件的数据集。

  1. Model.exclude(name='John')
  1. count()

统计满足条件的数据数量。

  1. Model.filter(name='John').count()
  1. order_by()

按照指定字段排序查询结果。

  1. Model.all().order_by('name')

查询条件

运算符描述示例查询

  1. __range

查询在指定范围之间。

  1. Model.filter(age__range=(20, 30))
  1. __isnull

是否为空(IS NULL)。

  1. Model.filter(field__isnull=True)
  1. __regex

正则表达式匹配(REGEXP 或 LIKE,取决于数据库)。

  1. Model.filter(name__regex=r'John.*')
  1. __iregex

不区分大小写的正则表达式匹配(IREGEXP 或 ILIKE,取决于数据库)。

  1. Model.filter(name__iregex=r'john.*')
  1. =

精确匹配。

  1. Model.filter(name='John')
  1. __not

不等于。

  1. Model.filter(name__not='John')
  1. __gt

大于。

  1. Model.filter(age__gt=30)
  1. __gte

大于或等于。

  1. Model.filter(age__gte=30)
  1. __lt

小于。

  1. Model.filter(age__lt=30)
  1. __lte

小于或等于。

  1. Model.filter(age__lte=30)
  1. __in

成员运算符,用于查询在指定列表中的值。

  1. Model.filter(id__in=[1, 2, 3])
  1. __nin

成员运算符,用于查询不在指定列表中的值。

  1. Model.filter(id__nin=[1, 2, 3])
  1. __icontains

模糊查询,包含指定字符串,不区分大小写。

  1. Model.filter(name__icontains='john')
  1. __istartswith

模糊查询,字符串以指定值开头,不区分大小写。

  1. Model.filter(name__istartswith='john')
  1. __iendswith

模糊查询,字符串以指定值结尾,不区分大小写。

  1. Model.filter(name__iendswith='john')

Trotoise ORM 修改数据

一对多查询、多对多查询

一对多查询

查询所有学生的姓名

方法描述

  1. await Student.all().values("name")

获取所有学生的姓名

查询特定学生信息

方法描述

  1. await Student.get(name="张三")

获取姓名为"张三"的学生对象属性描述

  1. students.sno

学号,2001

  1. students.name

姓名,张三

  1. students.clazzs_id

班级编号(外键),1

  1. await students.clazzs.values("name")

查询班级名称,{‘name’: ‘计算机科学与技术’}

多对多查询

查询学生课程信息

方法描述

  1. await Student.all().values("name", "clazzs__name")

获取所有学生的姓名和班级名称

  1. await Student.get(name="张三")

获取姓名为"张三"的学生对象

  1. await students.courses.all()

张三学生所有的课程(一对多)

  1. await students.courses.all().values("name")

张三学生所有的课程的名称(一对多)

  1. await students.courses.all().values("name", "teacher__name")

张三学生所有的课程的名称和教师名称

  1. await Student.all().values("name", "clazzs__name", "courses__name")

多个学生的所有课程对应的所有教师(多对多)

分页查询

方法描述

  1. await Student.all().limit(5)

获取前5个学生

  1. await Student.all().offset(5).limit(5)

跳过前5个学生,再获取5个学生

  1. await Student.filter(age__gt=20).limit(10)

获取年龄大于20的前10个学生

  1. await Student.filter(age__gt=20).filter(name__contains="Hans")

获取年龄大于20且姓名包含"Hans"的学生

Tortoise ORM 数据修改

方法描述

  1. Student.filter(id=1).update(name="张三")

根据学生ID修改学生姓名为"张三"

  1. students = await Student.all()

获取所有学生

  1. for student in students: student.name += "Aa"

批量更新学生姓名,在每个姓名后面添加字符"Aa"

Trotoise ORM 新增数据

方法描述

  1. await Student.create(name="张不四", pwd=123456, sno=2007, clazzs_id=2)

新增一条学生数据

  1. await Student.bulk_create([Student(name="批量新增名称"+str(i), pwd=123456, sno=2007+i, clazzs_id=2) for i in range(3)])

批量新增多条学生数据方法描述

  1. await Student.create(...)

新增一条学生数据

  1. await Student.bulk_create([...])
  1. bulk_create()

方法是

  1. Tortoise ORM

中用于批量新增数据的函数。该方法可以一次性将多个数据对象批量插入到数据库中,从而提高数据插入的效率。

示例:批量新增学生数据

  1. create_student_object_list =await Student.bulk_create([
  2. Student(name="批量新增名称"+str(i), pwd=123456, sno=2007+i, clazzs_id=2)for i inrange(3)])

在这段代码中,我们首先创建了一个包含多个学生对象的列表,每个学生对象具有不同的属性。然后我们调用

  1. bulk_create()

方法,传递包含学生对象的列表作为参数。

  1. Tortoise ORM

会将列表中的每个学生对象批量插入到数据库中。

通过使用

  1. bulk_create()

方法,可以减少与数据库的交互次数,提高数据插入的效率,特别是在需要批量插入大量数据时尤为有用。

标签: 数据库 python django

本文转载自: https://blog.csdn.net/2402_83735444/article/details/141161126
版权归原作者 Fender的web学习路程 所有, 如有侵权,请联系我们删除。

“Tortoise ORM 和 Aerich 使用文档参考表”的评论:

还没有评论