Also this didn't work for me:

print(session.query(Jobmst)
             .values(Jobmst.jobmst_type,
                     Jobmst.jobmst_name)
             .first()
      )

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

Swapping first to earlier in the chain like so:

print(session.query(Jobmst).first()
             .values(Jobmst.jobmst_type,
                     Jobmst.jobmst_name)        
      )

yields:


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

I get confused as well, thinking that *columns (from here 
<http://docs.sqlalchemy.org/en/latest/orm/query.html#sqlalchemy.orm.query.Query.values>)
 
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 
array.

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 <https://stackoverflow.com/a/21384492/495157> about 
it:




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() 
>> <http://docs.sqlalchemy.org/en/latest/orm/query.html#sqlalchemy.orm.query.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

http://www.sqlalchemy.org/

To post example code, please provide an MCVE: Minimal, Complete, and Verifiable 
Example.  See  http://stackoverflow.com/help/mcve 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 sqlalchemy+unsubscr...@googlegroups.com.
To post to this group, send email to sqlalchemy@googlegroups.com.
Visit this group at https://groups.google.com/group/sqlalchemy.
For more options, visit https://groups.google.com/d/optout.

Reply via email to