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.