Mam ten prosty model autora - książki i nie mogę znaleźć sposobu na zrobienie firstName i lastName klucza złożonego i użycie go w relacji. Jakieś pomysły?Relacje na klucze złożone przy użyciu sqlalchemy
from sqlalchemy import create_engine, ForeignKey, Column, String, Integer
from sqlalchemy.orm import relationship, sessionmaker
from sqlalchemy.ext.declarative import declarative_base
Base = declarative_base()
engine = create_engine('mssql://user:[email protected]')
engine.echo = True
session = sessionmaker(engine)()
class Author(Base):
__tablename__ = 'authors'
firstName = Column(String(20), primary_key=True)
lastName = Column(String(20), primary_key=True)
books = relationship('Book', backref='author')
class Book(Base):
__tablename__ = 'books'
title = Column(String(20), primary_key=True)
author_firstName = Column(String(20), ForeignKey('authors.firstName'))
author_lastName = Column(String(20), ForeignKey('authors.lastName'))
[docs] (http://docs.sqlalchemy.org/en/rel_0_9/core/constraints.html?highlight=check#metadata-foreignkeys) zawiera dodatkowe wyjaśnienia i przykłady: Należy pamiętać, że 'ForeignKeyConstraint 'jest jedynym sposobem zdefiniowania złożonego klucza obcego. Chociaż moglibyśmy umieścić indywidualne obiekty 'ForeignKey' w obu kolumnach [...], SQLAlchemy nie byłby świadomy, że te dwie wartości powinny być sparowane ze sobą - byłyby to dwa indywidualne ograniczenia obce zamiast pojedynczego złożonego odniesienia do klucza obcego. dwie kolumny. – iled