@classmethod
@lru_cache(maxsize=128)
def get_or_create(cls, title):
try:
return db.session.query(cls).filter(cls.title == title).one()
except SQLAlchemyError:
obj = cls(
title=title,
creator_id=current_user.id,
editor_id=current_user.id,
)
db.session.add(obj)
db.session.commit()
return obj
Лру кеш просто так это опасно, а ещё опаснее делать коммит в методе.
Обсуждают сегодня