sqlalchemy ORM: как объявить табличный класс, содержащий первичный ключ из нескольких столбцов? - PullRequest
24 голосов
/ 27 января 2012

Столбцы первичного ключа должны быть в определенном порядке.

Я вижу некоторый код из документа:

class User(Base):
    __tablename__ = 'users'

    id = Column(Integer)

    __mapper_args__ = {
        'primary_key':[id]
    }

Но он просто не работает (я использую mysql,и первичный ключ id не будет сгенерирован).Любые возможные решения?

1 Ответ

42 голосов
/ 27 января 2012

Если столбцы объявлены в том же порядке, в каком они должны быть в первичном ключе:

class User(Base):
    field1 = Column(Integer, primary_key=True)
    field2 = Column(Integer, primary_key=True)

В противном случае объявите его в __table_args__:

class User(Base):
    field1 = Column(Integer)
    field2 = Column(Integer)
    __table_args__ = (
        PrimaryKeyConstraint('field2', 'field1'),
        {},
    )
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...