Я сохраняю пути к файлам, используя sqlalchemy. На данный момент они хранятся как абсолютные пути, но мне нужно, чтобы они сохранялись как относительные. Однако я не хочу вручную соединять пути с базовым каталогом каждый раз, когда они нужны, вместо этого это следует делать автоматически, прежде чем они будут сопоставлены с объектом. Таким образом, каждый раз, когда я запрашиваю базу данных, я получаю абсолютный путь, даже если они хранятся относительно. Как бы я это сделал? Конфигурация маппера?
Вопрос
Редактирование атрибута перед его сопоставлением с объектом в SQLAlchemy
Ответы
Ответ 1 · рейтинг 3 · vvladymyrov
Одно из возможных решений - добавить в сопоставленный класс метод, который будет преобразовывать относительный путь в абсолютный. Этот метод должен знать путь к корневому каталогу, который может быть определен глобальной переменной области видимости.
global_base_path = "/home/user"
...
class Path(Base):
...
relative_path = Column(String(2048))
...
@property
def absolute_path(self):
return os.path.join(global_base_path,self.relative_path)
q = session.query(Path)
c = q.first()
print c.absolute_path
Перевод вопроса и ответов сообщества Stack Overflow, лицензия CC BY-SA. Оригинал на Stack Overflow.
Похожие материалы
- Приложения машинного обучения с моделями машинного обучения Swift as Backend и Python
- Vaex: одна библиотека, чтобы править ими всеми.
- Python против R: почему Python выходит на первое место для машинного обучения и искусственного интеллекта
- Сериализаторы: ускоренный курс Django Rest Framework в 2022 году
- SQLAlchemy один ко многим без дочерней таблицы, имеющей первичный ключ
- Как выполнить инструкции CREATE в SQLAlchemy для таблиц, описанных в других классах?