【发布时间】:2022-01-12 11:49:41
【问题描述】:
当我运行以下代码时,我希望 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 列是空的,而不是我期望的自动递增整数。
要明确:我的问题是:如何为不是主键的 SQLAlchemy ORM 类创建自动递增索引?
【问题讨论】:
-
如果你不需要递增,你可以使用UUID4s
标签: python mysql sqlalchemy flask-sqlalchemy