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

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

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

class User(Base):
    __tablename__ = 'users'

    id = Column(Integer)

    __mapper_args__ = {
        'primary_key':[id]
    }

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

Ответ 1

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

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'),
        {},
    )