-
-
Notifications
You must be signed in to change notification settings - Fork 660
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Get select with options (selectinload) using response schema #538
Comments
There are 2 ways to Child load with a selectin (or whatever type of lazy option):
childs:List[Child]= sm.Relationship(
back_populates="parent",
sa_relationship_kwargs: {"lazyload": "selectin"},
) Whenever you select Parent objects, the children will always be loaded.
If you want to be a bit more selective about when you do the selectin load, you can add it to the query: from sqlalchemy.orm import selectinload
all_parents = session.exec(select(Parent).options(selectinload(Parent.childs)).all() Pretty much anything you can do with the loads is described here: https://docs.sqlalchemy.org/en/14/orm/loading_relationships.html |
Any way to use this without type errors? I'm getting this complaint when I use the selectinload
|
In version childs:List[Child]= sm.Relationship(
back_populates="parent",
sa_relationship_kwargs: {"lazy": "selectin"}, # lazy instead of lazyload
) |
@cycledriver Thank you for your reply! But I have related question, in that case all childs will be loaded, what can be a problem if there are a lot of childs. Do you know if there is a way to limit childs, or add where condition or whatever to load only N childs? |
Actually found a way:
|
First Check
Commit to Help
Example Code
Description
What i want to get from pydantic response schema ? I want to get a query with select lazy options, using the schema of response, because this information already contains in relationships of pydantic models.
For example:
select(Parent).options(selectinload(Parent.Childs)),
The existance of property in pydantic model gives information about the need to use selectinload. Is there any solutions for it?
Operating System
Linux
Operating System Details
any
SQLModel Version
any
Python Version
any
Additional Context
any
The text was updated successfully, but these errors were encountered: