query.values 在 Elixir 中失败
我在使用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()的说明:
返回一个迭代器,生成与给定列列表对应的结果元组