SQLAlchemy.orm: создать таблицу с составным первичным ключом с автоинкрементом - PullRequest
0 голосов
/ 18 июня 2020

Я хочу сделать составной первичный ключ, состоящий из (entry_id, version). Определение:

class Content(Base):
    entry_id = Column(types.Integer, ForeignKey('entries.id'),
                            primary_key=True)
    version = Column(types.Integer, primary_key=True)
    entry = relationship(Entry,foreign_keys=entry_id)

Возможно ли, чтобы SQL алхимия сама выяснила, каким должно быть поле version при создании объекта Content?

Я хочу добавить строка до contents, основанная только на entry:

content= Content(entry=some_entry)
session.add(content)
session.commit()
>>> sqlalchemy.exc.IntegrityError: (MySQLdb._exceptions.IntegrityError) (1364, "Field 'version' doesn't have a default value")

. Желаемым поведением было бы создание строки с (entry_id = some_entry.id, version = 0), если some_entry.id еще не присутствует в таблице, иначе (entry_id = some_entry.id, version = max(SELECT version FROM contents WHERE content.id = some_entry.id)+1).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...