Also this didn't work for me:


AttributeError: 'generator' object has no attribute 'first'

Swapping first to earlier in the chain like so:



AttributeError: 'Jobmst' object has no attribute 'values'

I get confused as well, thinking that *columns (from here 
infers a list of some kind. 

So if I don't have a columns variable assigned to a list, I should be able 
to embed one directly with this sort of syntax values([c1,c2])
But you indicate something like values(c1,c2). 
So that confuses me as a newbie to Python (my background being 
predominantly Java, Groovy, Typescript, Javascript, Angular 2-4, Ionic 2-3).
The * prefix immediately clicked for my from somewhere else. Maybe 
academically from reading about C++.. Something like a pointer to the whole 

I've been brushing up on things like *args *kwargs too - so understand 
their purpose.
Duck typing, passing parameters as a dictionary is known to me from Groovy.
It still confounds me though knowing what type to pass in the values().
Have been reading here <> about 

On Friday, 9 February 2018 09:48:51 UTC, Jeremy Flowers wrote:
> I was thinking about this overnight.. 
> Do *values* relates specifically to inserts and updates, not 
> selects/deletes perhaps, which would correlate to SQL syntax. 
> If, it would make sense to indicate that in the documentation
> On Thursday, 8 February 2018 20:29:45 UTC, Jeremy Flowers wrote:
>> I've seen you can do things like this:
>> fields = ['jobmst_type', 'jobmst_name']
>>  print(session.query(Jobmst).options(load_only(*fields)).first())
>> But according to the documentation, you should be able to do something 
>> with Query values() 
>> <>
>> too.
>> But once again I seem to be dumbfounded by the syntatic sugar.
>> What data type does the list of values need?
>> *Is there a way to introspect that ahead of time?*
>> Thought I was onto something with *.base_columns*, but that didn't work 
>> either...
>> I ended up with something like an instrumentalAttributes mismatch.
>> print(session.query(Jobmst)
>>              .values([Jobmst.jobmst_type.base_columns,
>>                       Jobmst.jobmst_name.base_columns
>>                       ])
>>              .first()
>>       )
>> sqlalchemy.exc.InvalidRequestError: SQL expression, column, or mapped 
>> entity expected - got '[{Column('jobmst_type', Numeric(scale=0, 
>> asdecimal=False), table=<jobmst>, nullable=False)}, {Column('jobmst_name', 
>> String(length=256), table=<jobmst>, nullable=False)}]'
>> BTW: I'm aware of querying with things like query(Jobmst.jobmst_type, 
>> Jobmst.jobmst_name) too - but looking to understand what values expects.
>> Mike, Can documentation not specify type?

SQLAlchemy - 
The Python SQL Toolkit and Object Relational Mapper

To post example code, please provide an MCVE: Minimal, Complete, and Verifiable 
Example.  See for a full description.
You received this message because you are subscribed to the Google Groups 
"sqlalchemy" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
To post to this group, send email to
Visit this group at
For more options, visit

Reply via email to