summaryrefslogtreecommitdiff
path: root/examples/asyncio/async_orm.py
diff options
context:
space:
mode:
authormike bayer <mike_mp@zzzcomputing.com>2023-05-09 14:10:24 +0000
committerGerrit Code Review <gerrit@bbpush.zzzcomputing.com>2023-05-09 14:10:24 +0000
commit89c8688d71961522faa69e0780738ff86c8c76e5 (patch)
treebd5836617ab654f199f24d7659f9dfd1dd921112 /examples/asyncio/async_orm.py
parenta1a16a3509a286225ab28ba3a418e638b004f858 (diff)
parentb3216486c417f7fb2abc0724563a1d21f9a835d9 (diff)
downloadsqlalchemy-89c8688d71961522faa69e0780738ff86c8c76e5.tar.gz
Merge "add AsyncAttrs" into main
Diffstat (limited to 'examples/asyncio/async_orm.py')
-rw-r--r--examples/asyncio/async_orm.py15
1 files changed, 11 insertions, 4 deletions
diff --git a/examples/asyncio/async_orm.py b/examples/asyncio/async_orm.py
index 66501e545..eabc0250d 100644
--- a/examples/asyncio/async_orm.py
+++ b/examples/asyncio/async_orm.py
@@ -12,15 +12,18 @@ from typing import Optional
from sqlalchemy import ForeignKey
from sqlalchemy import func
from sqlalchemy.ext.asyncio import async_sessionmaker
+from sqlalchemy.ext.asyncio import AsyncAttrs
from sqlalchemy.ext.asyncio import create_async_engine
from sqlalchemy.future import select
-from sqlalchemy.orm import declarative_base
+from sqlalchemy.orm import DeclarativeBase
from sqlalchemy.orm import Mapped
from sqlalchemy.orm import mapped_column
from sqlalchemy.orm import relationship
from sqlalchemy.orm import selectinload
-Base = declarative_base()
+
+class Base(AsyncAttrs, DeclarativeBase):
+ pass
class A(Base):
@@ -31,7 +34,7 @@ class A(Base):
create_date: Mapped[datetime.datetime] = mapped_column(
server_default=func.now()
)
- bs: Mapped[List[B]] = relationship(lazy="raise")
+ bs: Mapped[List[B]] = relationship()
class B(Base):
@@ -93,11 +96,15 @@ async def async_main():
result = await session.scalars(select(A).order_by(A.id))
- a1 = result.first()
+ a1 = result.one()
a1.data = "new data"
await session.commit()
+ # use the AsyncAttrs interface to accommodate for a lazy load
+ for b1 in await a1.awaitable_attrs.bs:
+ print(b1)
+
asyncio.run(async_main())