Hello,
I have a ManyToMany relationship between two tables, although I am not
using "foreign keys" to establish it (this is a deliberate decision that I
wouldn't like to explain more at this point). However, I am struggling to
define this relationship using SQLAlchemy. At the very beginning, I found
the *primaryjoin* that I tried using with partial success. I managed to get
it working with *backref* (and with only one side being a list, which is
not what I wanted), but to be honest it was rather by accident. I keep
missing the information/examples of how exactly the *foreign_keys* and
*remote_side* arguments are and how to use them effectively. I went through
every single SO question on that topic and the documentation that mainly
involves self joins (that is understandable as my use case is rather
uncommon).
class Address(Base):
__tablename__ = 'addresses'
id = Column(UUID, primary_key=True)
address_id = Column(String(8), nullable=False)
is_deleted = Column(Boolean, server_default=expression.false(),
nullable=False)
companies = relationship("Company", primaryjoin="...",
back_populates="addresses")
class Company(Base):
__tablename__ = 'companies'
id = Column(UUID, primary_key=True)
address_id = Column(String(8), nullable=False)
addresses = relationship("Address", primaryjoin="...",
back_populates="companies")
I would like a *bidirectional relationship* with using *back_populates* (I
don't like using *backref* as my models are often scattered across
different modules and I prefer to be explicit). I am not using primary keys
on purpose as I want to keep the historical addresses data just by marking
address by deleted (and keeping companies and address linked via
*address_id*). Referential integrity is enforced by the 3rd party provider
where I import the data from, so this is not an issue in my case.
Any help on how I should define the *relationship* on both models is
appreciated. I really want to understand *foreign_keys* and *remote_side*
because
at the moment I cannot seem to be able to wrap my head around, even after
reading
https://docs.sqlalchemy.org/en/13/orm/join_conditions.html#creating-custom-foreign-conditions
:(
Thanks in advance
--
SQLAlchemy -
The Python SQL Toolkit and Object Relational Mapper
http://www.sqlalchemy.org/
To post example code, please provide an MCVE: Minimal, Complete, and Verifiable
Example. See http://stackoverflow.com/help/mcve for a full description.
---
You received this message because you are subscribed to the Google Groups
"sqlalchemy" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
To view this discussion on the web visit
https://groups.google.com/d/msgid/sqlalchemy/e0c7d5f6-58fe-410e-b0af-1d60973d3ba9%40googlegroups.com.