0

I have a problem with the Elixir declarative layer; I want to retrieve, for every instance of my model, the data of a particular column, like this:

File.query.values("column")

The thing is, it only works with filtered queries, with the simple query of the example it fails with this error :

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

This kind of looks like a bug in Elixir, but I'm failing to find a workaround, and maybe I totally overlooked something in the way it is supposed to work.

Ben
  • 51,770
  • 36
  • 127
  • 149
raph.amiard
  • 2,755
  • 2
  • 20
  • 23

1 Answers1

2

Use the form

File.query.values(Table.column)

and it should work. It returns a generator, so wrap with list() to get a sequence. See this example interactive output:

>>> 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',)

BTW it's not particularly an Elixir issue - the query returned from an Elixir entity's query property is a standard SQLAlchemy query object. Note the SQLAlchemy documentation for Query.values():

Return an iterator yielding result tuples corresponding to the given list of columns

Vinay Sajip
  • 95,872
  • 14
  • 179
  • 191