sql >> Database teknologi >  >> RDS >> Mysql

SQLAlchemy og joins, vi har ingen fremmednøgler

Du har to muligheder. Du kan bestå deltagelsesbetingelsen i join sådan:

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

Hvis du definerer dette i form af et orm.relationship egenskab, vil søgeordsparameteren være primaryjoin i stedet for onclause .

Den tilgang, jeg foretrækker, er dog bare at lyve . Informer SQLAlchemy om, at der er en fremmednøgle, selvom den ikke er det.

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

SQLAlchemy vil fortsætte, som om den fremmede nøgle faktisk var til stede, selvom den faktiske database ikke har det. Selvfølgelig kan du løbe ind i problemer, hvis den underforståede fremmednøglebegrænsning overtrædes (comments.user_id når der ikke er noget tilsvarende users.id ), men du ville sandsynligvis være i problemer alligevel.




  1. Er dette en rigtig lang meningsmåling?

  2. Sådan afkortes TABLE i Oracle

  3. Oracle:eksporter en tabel med blobs til en .sql-fil, der kan importeres igen

  4. bestil efter newid() - hvordan virker det?