Bezdepbonusu7Программирование: статьи и ответы

Вопрос

Редактирование атрибута перед его сопоставлением с объектом в SQLAlchemy

Автор вопроса: Ben DavisОтветов: 1

Я сохраняю пути к файлам, используя sqlalchemy. На данный момент они хранятся как абсолютные пути, но мне нужно, чтобы они сохранялись как относительные. Однако я не хочу вручную соединять пути с базовым каталогом каждый раз, когда они нужны, вместо этого это следует делать автоматически, прежде чем они будут сопоставлены с объектом. Таким образом, каждый раз, когда я запрашиваю базу данных, я получаю абсолютный путь, даже если они хранятся относительно. Как бы я это сделал? Конфигурация маппера?

pythonsqlalchemy

Ответы

Ответ 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.

Похожие материалы