sqlalchemy ORM:如何声明包含多列主键的表类?

Det*_*ant 27 python sqlalchemy

主键的列必须按特定顺序排列.

我从文档中看到一些代码:

class User(Base):
    __tablename__ = 'users'

    id = Column(Integer)

    __mapper_args__ = {
        'primary_key':[id]
    }
Run Code Online (Sandbox Code Playgroud)

但它只是不起作用(我使用的是mysql,并且不会生成id主键).任何可能的解决方

Den*_*ach 46

如果列的声明顺序与它们在主键中的顺序相同:

class User(Base):
    field1 = Column(Integer, primary_key=True)
    field2 = Column(Integer, primary_key=True)
Run Code Online (Sandbox Code Playgroud)

否则声明__table_args__:

class User(Base):
    field1 = Column(Integer)
    field2 = Column(Integer)
    __table_args__ = (
        PrimaryKeyConstraint('field2', 'field1'),
        {},
    )
Run Code Online (Sandbox Code Playgroud)

  • 从版本 1.4 开始,您不再需要引号,例如:`PrimaryKeyConstraint(field2, field1),` (2认同)