sql >> Databáze >  >> RDS >> Mysql

SQLAlchemy a joins, nemáme žádné cizí klíče

Máte dvě možnosti. Podmínku spojení můžete předat v join takhle:

j = join(users, comments, onclause=users.c.id == commends.c.user_id)

Pokud to definujete z hlediska orm.relationship vlastnost, bude parametr klíčového slova primaryjoin místo onclause .

Nicméně přístup, který preferuji, je prostě lhát . Informujte SQLAlchemy, že existuje cizí klíč, i když není.

comments = Table('comments', metadata,
    Column('id', Integer, primary_key=True),
    Column('user_id', Integer, ForeignKey('users.id')),
    ...
)

SQLAlchemy bude postupovat, jako by byl cizí klíč ve skutečnosti přítomen, i když ho skutečná databáze nemá. Samozřejmě se můžete dostat do problémů, pokud dojde k porušení implikovaného omezení cizího klíče (comments.user_id když neexistuje odpovídající users.id ), ale stejně byste pravděpodobně měli potíže.




  1. Jak změnit národní prostředí při formátování čísel v PostgreSQL

  2. ORA-12519 TNS:Nebyl nalezen žádný vhodný obslužný program

  3. existuje omezení velikosti souboru při vytváření souboru csv pomocí php a mysql?

  4. T-SQL dotaz pro zobrazení definice tabulky?