anomaly / anomaly/lab-python-server

Document relevant asyncio notes for SQLAlchemy

Offen
#26 0 Kommentare 0 Reaktionen 1 zugewiesene Person Beansprucht von @devraj Auf GitHub ansehen
documentation
Vorherrschende Sprache
Python
Sterne
16
Forks
4
PR-Merge-Kennzahlen
Keine gemergten PRs in 30 T.

Beschreibung

When using `asyncio` - queries etc use the new `2.0` query pattern e.g

```python
@classmethod
async def get_active_for_facility(cls, async_db_session, facility_id):
query = select(cls).options(selectinload(cls.products)).\
where(cls.facility_id == facility_id).\
where(cls.active == True)
results = await async_db_session.execute(query)
(result,) = results.scalars().all()
return result
```

which also means using statements like `select(cls).options(selectinload(cls.products))` to load the children. This is required when we are trying to include these objects as part of the API results.

While SQLAlchemy has extensive [documentation about this](https://docs.sqlalchemy.org/en/14/orm/extensions/asyncio.html) we should extract our some useful tips and tricks to speed up the learning process, current hit list

- [ ] Defining [relationships for eager loading](https://leontrolski.github.io/sqlalchemy-relationships.html)
- [ ] Querying many or single objects
- [ ] Loading objects multiple levels deep

Beitragsleitfaden

Für dieses Repository ist kein Beitragsleitfaden indexiert

Bewertung

Dieses Issue wurde noch nicht bewertet.

Neue Issues direkt in Ihr Postfach

Eine kurze Übersicht über anfängerfreundliche GitHub-Issues.