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 sqlalchemy+unsubscr...@googlegroups.com.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/sqlalchemy/e0c7d5f6-58fe-410e-b0af-1d60973d3ba9%40googlegroups.com.

Reply via email to