Я хотел бы представить тип данных как один столбец в моей модели, но на самом деле данные будут храниться в нескольких столбцах в базе данных. Я не могу найти никаких хороших ресурсов, как это сделать в SQLAlchemy.Пользовательский тип SQLAlchemy, который содержит несколько столбцов
Я хотел бы моя модель, чтобы выглядеть следующим образом (это упрощенный пример использования геометрии вместо моей реальной проблемы, которая труднее объяснить):
class 3DLine(DeclarativeBase):
start_point = Column(my.custom.3DPoint)
end_point = Column(my.custom.3DPoint)
Таким образом, я мог бы присвоить объект с (x, y, z) компоненты точки сразу, не устанавливая их отдельно. Если бы мне пришлось отделять каждый компонент, это могло бы стать уродливым, особенно если каждый класс имеет несколько из этих составных объектов. Я бы объединил значения в одно закодированное поле, за исключением того, что мне нужно время от времени запрашивать каждое значение отдельно.
Я смог узнать, как создавать пользовательские типы, используя один столбец in the documentation. Но нет никаких признаков того, что я могу сопоставить один тип с несколькими столбцами.
Я полагаю, что я мог бы выполнить это, используя отдельную таблицу, и каждый столбец будет внешним ключом, но в моем случае я не думаю, что имеет смысл иметь сопоставление от одного до одного для каждой точки к отдельному table, и это все еще не дает возможности устанавливать связанные значения одновременно.
Это отлично подходит для одноразового использования, однако такой подход не позволяет учитывать его как отдельный вид, в тех случаях, как и выше, когда представляют собой два составных поля одного типа (start_point и end_point) - будет дублирование имен столбцов. Можно ли использовать автоматический вывод имен столбцов, который работает для полей с одним столбцом, и просто добавлять «_x», «_y» и «_z» к нему? (Мета: должен ли я задать отдельный вопрос об этом?) – Veky