Это моя таблица:
CREATE TABLE "public"."patient_has_doctor" (
"patient_person_id" INT NOT NULL,
"doctor_person_id" INT NOT NULL,
PRIMARY KEY ("patient_person_id", "doctor_person_id"),
CONSTRAINT "fk_Patient_has_Doctor_Patient1"
FOREIGN KEY ("patient_person_id")
REFERENCES "public"."patients" ("person_id")
ON DELETE CASCADE
ON UPDATE CASCADE,
CONSTRAINT "fk_Patient_has_Doctor_Doctor1"
FOREIGN KEY ("doctor_person_id")
REFERENCES "public"."doctor" ("person_id")
ON DELETE CASCADE
ON UPDATE CASCADE);
Я не уверен, как определить первичный ключ в sqlalchemy. Я знаю, как сделать внешние ключи на основе других сообщений в стеке, но это специфицирует c case ускользает от меня. Я думаю:
class Book(Base):
__tablename__ = 'books'
author_firstName = Column(String(20))
author_lastName = Column(String(20))
__table_args__ = (ForeignKeyConstraint([author_firstName, author_lastName],
[Author.firstName, Author.lastName]),
{}, primary_key=True)
Но я не совсем уверен, что это лучший способ. Источник: Отношения на составных ключах с использованием sqlalchemy