Форум сайта python.su
Доброго дня всем!
Столкнулся с проблемой с SQL алхимией: в базе PostgreSQL хранятся события, у некоторых из них есть правила повторения (ежедневно, еженедельно, etc). Первичный ключ в таблице ID. Правила повторения событий хранятся в формате rrule. При выборке из базы данных события “разворачиваются” с помощью функции unnest, то есть получается несколько элементов с pk=1 но разной датой. Само собой, алхимия видит одинаковый pk и “склеивает” эти записи.
Банальным решением проблемы было бы сделать комбинированный pk на ID и дату события, но в таблице даты нет, это поле появляется только после select'а. В orm это поле описано так:
date = column_property(func.unnest(func.get_occurrences(cast(rrule, RRule), cast(func.now(), TIMESTAMP))).label("date"))
>>> Event.query.count() 182 >>> len(Event.query.all()) 1
Отредактировано PavelIvanov (Июль 7, 2016 11:07:03)
Офлайн