Я хочу сделать составной первичный ключ, состоящий из (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)
.