Elixir/SQLAlchemy中有类似ActiveRecord的find(:include)的方法吗?

1 投票
1 回答
1241 浏览
提问于 2025-04-16 10:23

我之前一直在用ActiveRecord,它可以通过一个可选的:include参数来加载一个对象的所有关联数据。最近我开始在一个Python项目中使用Elixir,但找不到任何文档说明是否也能做到这一点。

1 个回答

1

这里讲的是如何使用普通的 SQLAlchemy(不使用 Elixir):http://www.sqlalchemy.org/docs/orm/loading.html

我猜想你也可以用 Elixir 来配置加载策略,不过我自己没用过。

编辑 1:

根据Elixir 的文档,在关系构造(比如 ManyToOne)中可以包含一些选项,这些选项会直接传递给 SQLAlchemy 的 relation(如果版本 >= 0.6 就是 relationship)函数。这意味着你可以指定 lazy 选项来控制关联对象的加载方式。

我猜 Elixir 的 query 方法其实是 SQLAlchemy 的一个简单封装。这样的话,你也可以为每个查询控制是懒加载还是急加载。具体可以参考文档

编辑 2:

你有没有考虑过使用sqlalchemy.ext.declarative,而不是 Elixir 呢?

撰写回答