Main program function.
()
| 48 | |
| 49 | |
| 50 | async def async_main(): |
| 51 | """Main program function.""" |
| 52 | |
| 53 | engine = create_async_engine( |
| 54 | "postgresql+asyncpg://scott:tiger@localhost/test", |
| 55 | echo=True, |
| 56 | ) |
| 57 | |
| 58 | async with engine.begin() as conn: |
| 59 | await conn.run_sync(Base.metadata.drop_all) |
| 60 | async with engine.begin() as conn: |
| 61 | await conn.run_sync(Base.metadata.create_all) |
| 62 | |
| 63 | async_session = async_sessionmaker(engine, expire_on_commit=False) |
| 64 | |
| 65 | async with async_session() as session: |
| 66 | async with session.begin(): |
| 67 | # WriteOnlyMapped may be populated using any iterable, |
| 68 | # e.g. lists, sets, etc. |
| 69 | session.add_all( |
| 70 | [ |
| 71 | A(bs=[B(), B()], data="a1"), |
| 72 | A(bs=[B()], data="a2"), |
| 73 | A(bs=[B(), B()], data="a3"), |
| 74 | ] |
| 75 | ) |
| 76 | |
| 77 | stmt = select(A) |
| 78 | |
| 79 | result = await session.scalars(stmt) |
| 80 | |
| 81 | for a1 in result: |
| 82 | print(a1) |
| 83 | print(f"created at: {a1.create_date}") |
| 84 | |
| 85 | # to iterate a collection, emit a SELECT statement |
| 86 | for b1 in await session.scalars(a1.bs.select()): |
| 87 | print(b1) |
| 88 | |
| 89 | result = await session.stream(stmt) |
| 90 | |
| 91 | async for a1 in result.scalars(): |
| 92 | print(a1) |
| 93 | |
| 94 | # similar using "streaming" (server side cursors) |
| 95 | async for b1 in (await session.stream(a1.bs.select())).scalars(): |
| 96 | print(b1) |
| 97 | |
| 98 | await session.commit() |
| 99 | result = await session.scalars(select(A).order_by(A.id)) |
| 100 | |
| 101 | a1 = result.first() |
| 102 | |
| 103 | a1.data = "new data" |
| 104 | |
| 105 | |
| 106 | asyncio.run(async_main()) |
no test coverage detected