Elixir/SQLAlchemy中有类似ActiveRecord的find(:include)的方法吗?
我之前一直在用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 呢?