query.values 在 Elixir 中失败

0 投票
1 回答
576 浏览
提问于 2025-04-16 08:05

我在使用Elixir的声明式层时遇到了一个问题;我想要获取我的模型每个实例中特定列的数据,像这样:

File.query.values("column")

问题是,它只在过滤后的查询中有效,像例子中的简单查询就会出现这个错误:

Could not locate a bind configured on SQL expression or this Session

这看起来有点像Elixir中的一个bug,但我找不到解决办法,也许我在它的工作方式上完全忽略了什么。

1 个回答

2

使用这个格式

File.query.values(Table.column)

就应该能正常工作。它会返回一个生成器,所以你可以用list()把它转换成一个列表。看看这个示例的互动输出:

>>> User.query.values('display_name')
Traceback (most recent call last):
  File "<console>", line 1, in ?
[snip traceback]
UnboundExecutionError: Could not locate a bind [ ... ] or this Session
>>> User.query.values(User.display_name).next()
(u'Vinay Sajip',)

顺便说一下,这并不是特别与Elixir有关——从Elixir实体的查询属性返回的查询是一个标准的SQLAlchemy查询对象。注意SQLAlchemy文档中关于Query.values()的说明:

返回一个迭代器,生成与给定列列表对应的结果元组

撰写回答