python-使用SQLAlchemy ORM作为非主键,唯一的自动递增ID

当我运行以下代码时,我期望first_name和last_name是复合主键,并且id是行的自动递增索引,但不充当主键,因为其余信息在那里我需要定义表的唯一性,而不是给定的ID.

Base = declarative_base()
Session = sessionmaker(bind=db)
session = Session()

class Person(Base):
    __tablename__ = "people"
    id = Column(Integer, index=True, unique=True, autoincrement=True, primary_key=False)
    first_name = Column(String(30), primary_key=True)
    last_name = Column(String(30), primary_key=True)

if __name__ == "__main__":
    Base.metadata.create_all(db)
    session.add_all([
        Person(first_name="Winston", last_name="Moy"),
        Person(first_name="Bill", last_name="Gates"),
        Person(first_name="Steve", last_name="Jobs"),
        Person(first_name="Quinten", last_name="Coldwater")
    ])
    session.commit()

我在DataGrip中查看结果的问题,正在获取下表.数据未按添加顺序排序,并且id列为null,而不是我期望的自动递增整数.
Image of person table

需要明确的是:我的问题是:如何为不是主键的SQLAlchemy ORM类创建自动增量索引?

最佳答案

在撰写本文时,SQLAlchemy 1.1不支持对非主键字段进行自动递增.