with the canonical ``User`` and ``Address`` scenario::
from sqlalchemy import Column, ForeignKey, Integer, String
- from sqlalchemy.ext.declarative import declarative_base
- from sqlalchemy.orm import relationship
+ from sqlalchemy.orm import declarative_base, relationship
Base = declarative_base()
in both directions. The above configuration is equivalent to::
from sqlalchemy import Column, ForeignKey, Integer, String
- from sqlalchemy.ext.declarative import declarative_base
- from sqlalchemy.orm import relationship
+ from sqlalchemy.orm import declarative_base, relationship
Base = declarative_base()
as if we limited the list of ``Address`` objects to those which start with "tony"::
from sqlalchemy import Column, ForeignKey, Integer, String
- from sqlalchemy.ext.declarative import declarative_base
- from sqlalchemy.orm import relationship
+ from sqlalchemy.orm import declarative_base, relationship
Base = declarative_base()
email = Column(String)
user_id = Column(Integer, ForeignKey("user.id"))
-
We can observe, by inspecting the resulting property, that both sides
of the relationship have this join condition applied::
placing :paramref:`_orm.relationship.back_populates` only on one side::
from sqlalchemy import Column, ForeignKey, Integer, String
- from sqlalchemy.ext.declarative import declarative_base
- from sqlalchemy.orm import relationship
+ from sqlalchemy.orm import declarative_base, relationship
Base = declarative_base()
The imports used for each of the following sections is as follows::
from sqlalchemy import Column, ForeignKey, Integer, Table
- from sqlalchemy.ext.declarative import declarative_base
- from sqlalchemy.orm import relationship
+ from sqlalchemy.orm import declarative_base, relationship
Base = declarative_base()
-
.. _relationship_patterns_o2m:
One To Many
import asyncio
- from sqlalchemy import Column, DateTime, ForeignKey, Integer, String, func
+ from sqlalchemy import (
+ Column,
+ DateTime,
+ ForeignKey,
+ Integer,
+ String,
+ func,
+ select,
+ )
from sqlalchemy.ext.asyncio import async_sessionmaker, create_async_engine
- from sqlalchemy.future import select
from sqlalchemy.orm import declarative_base, relationship, selectinload
Base = declarative_base()
import asyncio
+ from sqlalchemy import select
from sqlalchemy.ext.asyncio import AsyncSession, create_async_engine