Восстановить последовательность SQLalchemy при обновлении - PullRequest
1 голос
/ 21 ноября 2019

Представьте себе, что у меня есть класс в моих моделях, подобный этому:

class Sample(Base):
    __tablename__ = 'sample'
    id = Column(Integer, primary_key=True)
    firstname = Column(String(50))
    lastname = Column(String(50))
    auto_generated_code = Column(
        Integer, 
        Sequence('sample_auto_generated_code_sequence'),
        unique=True
    )

Когда я добавляю экземпляр в класс Sample, после очистки сеанса мой экземпляр автоматически получает целое число. пока все хорошо.

Я также хочу, чтобы при обновлении любого из других столбцов упомянутого экземпляра он автоматически получал новый auto_generated_code. Проще говоря, я хочу, чтобы мой Sequence также генерировал другой код на update. Как мне этого добиться?

1 Ответ

0 голосов
/ 23 ноября 2019

Я нашел ответ, что мы можем получить объект Sequence в Sqlalchemy следующим образом:

from sqlalchemy import Sequence

seq = Sequence('sample_auto_generated_code_sequence')

Затем мы можем получить следующую последовательность, выполнив ее в нашем соединении или сеансе

instance.auto_generated_code = session.execute(seq) # or conn.execute(seq)

Затем, добавив его в сеанс, все будет хорошо.

...