问题标签 [tortoise-orm]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
0 回答
49 浏览

fastapi - Tortoise 和 Fastapi 获取相关资源

我在 FastAPI 上有以下 Tortoise 模型:

我想,在获取用户时,也能得到它的好友请求(他们请求与其他人请求成为好友的好友请求。)

我的 FastAPI 路由中的查询:

生成的 UserOut 对象具有正确填充 FriendRequest 对象的字段friendships_requestor 和friendships_requestor。但是,这些 FriendRequest 对象不包括请求者和被请求者。(既不是 id 也不是 UserOut 对象)。我可以从当前用户的 id 中推断出两者之一,但真的很想知道如何包含它们?

样本输出:

0 投票
1 回答
399 浏览

python - 如何使用乌龟 ORM 执行本机 SQL

我想用龟甲ORM来执行原生SQL。我应该怎么办?我找不到这样做的方法或类。

0 投票
0 回答
87 浏览

python - AttributeError:类型对象“分数”没有属性“日期”

我正在尝试使用 orm for ORM 在 fastAPI 中制作记分牌 API。我遇到了一些错误,我完全不知道为什么,因为我的 Score 类有属性日期。

主要.py:

模型.py:

错误: AttributeError: type object 'Score' has no attribute 'date'

完整追溯:

0 投票
0 回答
32 浏览

python - 在我第一次从 Docker PHPMyAdmin 连接到 mySQL 实例之前,无法从 Tortoise/Python 连接到 Docker mySQL 实例

以下 docker-compose.yaml 中描述的“rest”服务在启动时运行一个 python 脚本,该脚本尝试连接到“db”服务的 mysql 实例。

每次我运行 docker-compose up 时,所有服务都会成功启动,但是“rest”服务会在调试控制台中不断报告“无法连接到 mySQL db”。

该问题的一个非常奇怪的解决方法似乎是打开 phpMyAdmin,并首先通过它登录到 mySQL 实例。从 phpMyAdmin 登录到 mySQL 数据库后,我返回到 docker-compose 控制台,我看到“rest”python 脚本已成功建立其数据库连接。

我已经一遍又一遍地验证了这种行为,但是我不知道为什么 mySQL 实例要求我首先使用 phpMyAdmin 登录,然后 python 脚本才能建立它自己的连接......

我的 python/tortoise 连接代码如下:

Docker-compose.yaml

0 投票
1 回答
24 浏览

fastapi - 对于创建操作,使用表单数据,但在 Tortoise ORM 文档中他们使用 JSON,最佳实践是什么?

我正在尝试使用 FastAPI 和 Tortoise ORM 制作一个 Web App 项目

我想创建一个用户(注册),主要数据是前端发送的表单数据,FastAPI 文档确实告诉我们如何处理表单数据。

但是 Tortoise ORM 文档中的示例(FastAPI 示例)使用简单的 JSON 数据。

在 Tortoise ORM 中创建使用示例

最佳做法是什么,我应该怎么做?

PS:只是一个建议,我应该使用 Tortoise ORM 还是切换到另一个 ORM,因为 Tortoise 仍然是一个年轻的项目(请同时考虑我应该考虑哪个其他 ORM)

如果我写错了,请原谅我是网络开发的新手。

感谢您的时间和帮助。

0 投票
2 回答
170 浏览

python - 在 `tortoise.field.ForeignKeyField` 中使用关键字 `related_name`

我已经阅读了 Tortoise-ORM 的文档,但是,至少对我来说,文档并不清楚related_name. tortoise.field.ForeignKeyField它仅声明:

我正在使用 Aerich(Tortoise-ORM 迁移管理器),但我看不到对related_name模型中使用的 ' 的单个引用。我还检查了数据库Postgres,找不到任何关于它的参考资料。也许我不知道去哪里找。

不幸的是,在 Tortoise-ORM 文档中没有关于此的简单实用示例。

我有一个非常简单的模型,例如:

在这方面如何related_name运作?

0 投票
0 回答
16 浏览

python - 解决了返回 QuerySet 而不是 ObjectType 的反向引用

给定带有外键的模型:

具有相关名称:

使用此代码定义:

解析给定路径时

按预期返回 QuerySet 而不是 Person。

重现

预期行为

由于返回的对象是类型类玩具,我希望能够解析 toy.builder,就像实例 pinocchio.builder 一样。但由于某种原因,它返回一个查询集。如我们所见,最后一个 printf 返回一个 QuerySet 但我期望的是一个 Person,如下所示的输出

如何转换QuerySet预期Person对象中的?(或类似的东西)

0 投票
0 回答
160 浏览

python - 如何使用 FastAPI 在 TortoiseORM 上建立关系

如何在使用 FastAPI 和 Tortoise-ORM 时使用 ForeignKey 关系并以 json 形式返回它们?

我知道如何直接使用 TortoiseORM 来实现它们,但是在尝试通过 FastAPI 执行相同操作时失败了。我的模式没有显示任何一种关系,而且我也不知道如何创建/更新对象以通过 HTTP/JSON 表示此信息。

Bellow 遵循一个带有简单模型的小型运行代码(两个元素,一个简单的关系和整个 FastAPI 样板来获取/放置/发布对象。该代码需要先安装tortoise-orm fastapiuvicorn。要运行它,只需python main.py(文件必须是命名main.py,否则uvicorn.run调用将失败)。

此外,为了更简单的测试,使用一个小的 bash 脚本来创建/更新一些对象。

此代码段在 Python 3.9、Tortoise ORM 0.17.8 和 FastAPI 0.70.0 上运行良好。

0 投票
0 回答
108 浏览

fastapi - Tortoise-orm,fastapi 递归模型

我正在做一些 POC 工作,并将一些代码从 fastapi+sqlalchemy 移植到 fastapi+tortoise-orm。

我有一些相互引用的pydantic模型,有点:

这涵盖了两个数据库模型 - 域和邮箱,它们之间具有一对多的关系。

这在 sqlalchemy+fastapi 中工作正常 - 因为 DB 模型和 pydantic 模式是完全分开定义的,只要 db 方法返回具有正确属性的对象,一切正常。

使用 tortoise-orm+fastapi 我们使用完全基于数据库的 pydantic_model_creator,并且似乎没有给我任何机会来配置它应该用于特定关系的 pydantic 模型。

有没有办法让这种事情发挥作用?感觉就像使用 pydantic_model_creator 在数据库逻辑/模式和表示逻辑/模式之间做了很多交叉污染,所以我很乐意摆脱它 - 但我不确定 tortoise-orm 是否可以在没有 pydantic_model_creator 的情况下使用 pydantic 驱动。

0 投票
0 回答
30 浏览

python - 将模块文件夹名而不是文件名添加到 Tortoise ORM config_file

我正在使用 jsonconfig_file方法进行 Tortoise ORM 设置。

这是工作文件的一部分:

my_models是文件夹,users.py并且teams.py是它的文件。

我只想将my_models文件夹名称放入配置文件中,而不必放入my_models.usersmy_models.teams。在更大的项目中,这可能看起来很丑陋,那么有没有办法只使用文件夹名称呢?

这应该是期望的结果: