feat(sql): add LazyTbl.last_select to simplify queries #449
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Addresses #346 for simplifying sql queries. The main issue was that siuba's LazyTbl was starting each query out using a full select statement, rather than just the sqlalchemy table object.
The original reason for always using select statements is that in sqlalchemy select statements can do more (e.g. have a
with_only_columns
method) than table objects (which mostly go in from clauses, are used to start select statements, have columns).This PR adds a new property
last_select
to complementlast_op
. Iflast_op
would return a table, thenlast_select
will make it a select statement. This allows verbs that e.g. usewith_only_columns
to ensure they get a select statement.