Tortoise ORM 和 Aerich 使用文档参考表

简介: 【8月更文挑战第15天】

Tortoise ORM 和 Aerich 使用文档参考表
安装
操作 命令 说明
安装 Tortoise ORM pip install tortoise-orm 安装 Tortoise ORM 库
安装 Aerich pip install aerich 安装 Aerich 迁移工具
初始化配置
操作 命令 说明
初始化 Aerich 配置 aerich init -t your_settingspath.TORTOISE_ORM 只需使用一次,初始化配置文件
数据库初始化
操作 命令 说明
初始化数据库 aerich init-db 一般情况下只需在第一次使用,初始化数据库表结构
数据迁移操作
操作 命令 说明
数据迁移 aerich migrate [--name] 执行数据迁移操作
aerich migrate --name add_column 示例:标记本次迁移操作为 add_column
模型版本管理
操作 命令 说明
升级模型版本 aerich upgrade 更新数据模型版本
降级模型版本 aerich downgrade 回退数据模型版本
查看迁移历史 aerich history 查看历史迁移记录
Tortoise ORM 查询参数详细说明
方法 描述 示例查询
get() 根据主键获取单条数据。如果数据不存在,将返回 None。 Model.get(id=1)
all() 查询所有数据,返回所有数据集(QuerySet 对象)。如果不加任何条件,它会返回表中的所有记录。 Model.all()
filter() 根据条件查询数据,返回满足条件的数据集(QuerySet 对象)。可以使用 all() 方法获取所有的查询结果,或者使用 first() 方法获取第一个结果。 Model.filter(name='John')
exclude() 排除满足条件的数据,返回不满足条件的数据集。 Model.exclude(name='John')
count() 统计满足条件的数据数量。 Model.filter(name='John').count()
order_by() 按照指定字段排序查询结果。 Model.all().order_by('name')
查询条件
运算符 描述 示例查询
range 查询在指定范围之间。 Model.filter(agerange=(20, 30))
isnull 是否为空(IS NULL)。 Model.filter(fieldisnull=True)
regex 正则表达式匹配(REGEXP 或 LIKE,取决于数据库)。 Model.filter(nameregex=r'John.')
iregex 不区分大小写的正则表达式匹配(IREGEXP 或 ILIKE,取决于数据库)。 Model.filter(nameiregex=r'john.
')
= 精确匹配。 Model.filter(name='John')
not 不等于。 Model.filter(namenot='John')
gt 大于。 Model.filter(agegt=30)
gte 大于或等于。 Model.filter(agegte=30)
lt 小于。 Model.filter(agelt=30)
lte 小于或等于。 Model.filter(agelte=30)
in 成员运算符,用于查询在指定列表中的值。 Model.filter(idin=[1, 2, 3])
nin 成员运算符,用于查询不在指定列表中的值。 Model.filter(idnin=[1, 2, 3])
icontains 模糊查询,包含指定字符串,不区分大小写。 Model.filter(nameicontains='john')
istartswith 模糊查询,字符串以指定值开头,不区分大小写。 Model.filter(nameistartswith='john')
iendswith 模糊查询,字符串以指定值结尾,不区分大小写。 Model.filter(nameiendswith='john')
Trotoise ORM 修改数据
一对多查询、多对多查询
一对多查询
查询所有学生的姓名
方法 描述
await Student.all().values("name") 获取所有学生的姓名
查询特定学生信息
方法 描述
await Student.get(name="张三") 获取姓名为"张三"的学生对象
属性 描述
students.sno 学号,2001
students.name 姓名,张三
students.clazzs_id 班级编号(外键),1
await students.clazzs.values("name") 查询班级名称,{‘name’: ‘计算机科学与技术’}
多对多查询
查询学生课程信息
方法 描述
await Student.all().values("name", "clazzsname") 获取所有学生的姓名和班级名称
await Student.get(name="张三") 获取姓名为"张三"的学生对象
await students.courses.all() 张三学生所有的课程(一对多)
await students.courses.all().values("name") 张三学生所有的课程的名称(一对多)
await students.courses.all().values("name", "teacher
name") 张三学生所有的课程的名称和教师名称
await Student.all().values("name", "clazzsname", "coursesname") 多个学生的所有课程对应的所有教师(多对多)
分页查询
方法 描述
await Student.all().limit(5) 获取前5个学生
await Student.all().offset(5).limit(5) 跳过前5个学生,再获取5个学生
await Student.filter(agegt=20).limit(10) 获取年龄大于20的前10个学生
await Student.filter(age
gt=20).filter(name__contains="Hans") 获取年龄大于20且姓名包含"Hans"的学生
Tortoise ORM 数据修改
方法 描述
Student.filter(id=1).update(name="张三") 根据学生ID修改学生姓名为"张三"
students = await Student.all() 获取所有学生
for student in students: student.name += "Aa" 批量更新学生姓名,在每个姓名后面添加字符"Aa"
Trotoise ORM 新增数据
方法 描述
await Student.create(name="张不四", pwd=123456, sno=2007, clazzs_id=2) 新增一条学生数据
await Student.bulk_create([Student(name="批量新增名称"+str(i), pwd=123456, sno=2007+i, clazzs_id=2) for i in range(3)]) 批量新增多条学生数据
方法 描述
await Student.create(...) 新增一条学生数据
await Student.bulk_create([...]) bulk_create() 方法是 Tortoise ORM 中用于批量新增数据的函数。该方法可以一次性将多个数据对象批量插入到数据库中,从而提高数据插入的效率。
示例:批量新增学生数据
create_student_object_list = await Student.bulk_create([
Student(name="批量新增名称"+str(i), pwd=123456, sno=2007+i, clazzs_id=2) for i in range(3)
])
1
2
3
在这段代码中,我们首先创建了一个包含多个学生对象的列表,每个学生对象具有不同的属性。然后我们调用 bulk_create() 方法,传递包含学生对象的列表作为参数。Tortoise ORM 会将列表中的每个学生对象批量插入到数据库中。

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

相关文章
|
SQL 关系型数据库 数据库
Tortoise ORM入门之理论篇
Tortoise ORM入门之理论篇
2755 0
Tortoise ORM入门之理论篇
|
资源调度 网络协议 JavaScript
npm,yarn使用,npm ,yarn 更换使用国内镜像源
npm,yarn使用,npm ,yarn 更换使用国内镜像源
|
6月前
|
JSON 安全 数据安全/隐私保护
用Pydantic验证和解析配置数据:比手写if更可靠
Pydantic以类型注解实现声明式配置验证,自动完成类型转换、范围校验、嵌套解析与多错误聚合,显著提升配置管理的可靠性、可读性与开发效率,是Python项目配置治理的行业标准方案。(239字)
207 0
|
安全 Unix Linux
Docker中授权普通用户使用docker命令以及解决无权限访问/var/run/docker.sock错误。
通过上述步骤,可以有效解决普通用户无法使用Docker命令的问题,同时处理 `/var/run/docker.sock`权限错误。这样的设置不仅方便用户使用Docker提供的各项服务,同时还能保护系统的安全性。在进行此类配置更改时,请确保理解每一步骤的作用及潜在的安全风险,尤其是在修改文件权限时。在实际的操作中,始终应该努力保持系统的最低必要权限,避免过度放宽权限,这是保障系统安全的一个重要方针。
3696 75
|
人工智能
HunyuanVideo:腾讯推出的开源视频生成模型,参数高达130亿
腾讯推出的开源视频生成模型HunyuanVideo,拥有130亿参数,是目前参数量最大的开源视频模型之一。该模型具备物理模拟、高文本语义还原度、动作一致性和电影级画质等特性,能生成带有背景音乐的视频,推动了视频生成技术的发展和应用。
1508 16
HunyuanVideo:腾讯推出的开源视频生成模型,参数高达130亿
|
安全 API 数据库
Python中的Tortoise ORM框架:高效、灵活的数据库交互新选择
【4月更文挑战第14天】在Python的数据库交互领域中,对象关系映射(ORM)框架扮演着举足轻重的角色。近年来,随着技术的不断发展和进步,众多ORM框架如雨后春笋般涌现,其中Tortoise ORM以其高效、灵活的特性受到了广大开发者的青睐。本文将深入探讨Tortoise ORM框架的核心特性、使用方法以及其在Python开发中的应用。
2888 4
|
关系型数据库 API 数据库
Python流行orm框架对比
Python中有多个流行的ORM框架,如SQLAlchemy、Django ORM、Peewee、Tortoise ORM、Pony ORM、SQLModel和GINO。每个框架各有特点,适用于不同的项目需求。SQLAlchemy功能强大且灵活,适合复杂项目;Django ORM与Django框架无缝集成,易用性强;Peewee轻量级且简单,适合小型项目;Tortoise ORM专为异步框架设计;Pony ORM查询语法直观;SQLModel结合Pydantic,适合FastAPI;GINO则适合异步环境开发。初学者推荐使用Django ORM或Peewee,因其易学易用。
2760 4
particles 粒子背景插件在vue3中的使用
本文介绍了如何在Vue 3项目中使用`particles.vue3`库来创建粒子背景特效。文章提供了粒子背景插件的概述、安装步骤、配置参数说明,并展示了粒子特效的实现效果。同时,提供了在main.js中进行全局配置、在Vue组件中使用粒子背景组件的示例代码,以及完整代码的下载链接。
|
关系型数据库 MySQL API
Python web框架fastapi数据库操作ORM(一)
Python web框架fastapi数据库操作ORM(一)
3236 2