30
我有這個簡單的作者 - 書籍模型,並找不到一種方法,使firstName和lastName複合鍵,並在關係中使用它。有任何想法嗎?使用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)包含額外的說明和示例:重要的是要注意'ForeignKeyConstraint '是定義複合外鍵的唯一方法。雖然我們也可以在兩個列上放置單獨的ForeignKey對象,但SQLAlchemy不會意識到這兩個值應該配對在一起 - 這將是兩個單獨的外鍵約束,而不是單個複合外鍵引用兩列。 – iled