Given the SqlAlchemy models where I defined a FK relation between business_partner_table and users_table
user_table = sqlalchemy.Table(
"users",
metadata,
sqlalchemy.Column("id", sqlalchemy.Integer, primary_key=True),
sqlalchemy.Column("first_name", sqlalchemy.String),
sqlalchemy.Column("last_name", sqlalchemy.String),
sqlalchemy.Column("email", sqlalchemy.String, unique=True),
)
and
business_partner_table = sqlalchemy.Table(
"business_partners",
metadata,
sqlalchemy.Column("id", sqlalchemy.Integer, autoincrement=True, primary_key=True, nullable=False),
sqlalchemy.Column("card_name", sqlalchemy.String),
sqlalchemy.Column("created_by", sqlalchemy.ForeignKey("users.id")),
)
I am struggling to implement SQLAlchemy ORM relationship in a non_declarative way
Below this is what i try to do:
@mapper_registry.mapped
class User:
__table__ = user_table
business_partners = relationship("BusinessPartner", back_populates="created_by_user")
@mapper_registry.mapped
class BusinessPartner:
__table__ = business_partner_table
created_by_user = relationship(
"User",
foreign_keys=[business_partner_table.c.created_by],
back_populates="business_partners"
)
API request looks as follow but I’m getting an error.
async def get_business_partners(current_user: Annotated[User, Depends(get_current_user)]):
query = (select(business_partner_table)
.where(business_partner_table.c.deleted_by == null())
.options(joinedload(BusinessPartner.created_by_user))
.order_by(business_partner_table.c.card_code))
My goal is to return the Business Partner in which the user data is nested within the created_by field.