sql >> Database >  >> RDS >> Mysql

SQLAlchemy en joins, we hebben geen externe sleutels

Je hebt twee opties. Je kunt de deelnamevoorwaarde doorgeven in join zoals zo:

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

Als je dit definieert in termen van een orm.relationship eigenschap, is de sleutelwoordparameter primaryjoin in plaats van onclause .

De benadering die ik verkies is echter om gewoon te liegen . Informeer SQLAlchemy dat er een externe sleutel is, ook al is die er niet.

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

SQLAlchemy gaat verder alsof de refererende sleutel daadwerkelijk aanwezig is, ook al heeft de eigenlijke database dat niet. Natuurlijk kunt u in de problemen komen als de impliciete beperking van de buitenlandse sleutel wordt geschonden (comments.user_id wanneer er geen corresponderende users.id . is ), maar je zou hoe dan ook in de problemen komen.




  1. Een nieuwe MySQL-database maken met go-sql-driver

  2. Hoe het Euro-symbool op te slaan in de mysql-database?

  3. mysql server 8.0 keyring-migratiefout bij inloggen

  4. Dynamisch geketende selectiebox