Когда я запускаю следующий код, я ожидаю, что first_name и last_name будут составным первичным ключом, а идентификатор будет индексом автоинкремента для строки, но не выступать в качестве первичного ключа, так как информация в остальной части таблицы заключается в том, что мне нужно определить ее уникальность, а не заданный идентификатор.Использование SQLAlchemy ORM для непервичного ключа, уникальный, автоматически увеличивающий 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, а не целое число с автоматическим увеличением, которое я ожидаю.
Должно быть ясным: Мой вопрос: Как я могу сделать индекс автоматического инкремента для ORM класса SQLAlchemy, который не является первичным ключом?
Если вы не увеличиваете * нужно *, вы можете использовать UUID4s –