Как использовать SQL Alchemy и SQL Alchemy Utils URLType, чтобы сохранить только имя хоста? - PullRequest
0 голосов
/ 13 января 2019

Я использую SQL Alchemy и SQL Alchemy Utils URLType в проекте в настоящее время, и я застрял, пытаясь выяснить, как санировать ввод атрибута SQLAlchemy, чтобы единственное, что хранится в базе данных является хозяином объекта furl. В настоящее время я решил эту проблему, просто вызывая метод класса перед каждой операцией set следующим образом:

class Website(Base, Timestamp):
    __tablename__ = "websites"

    id = Column(Integer, primary_key=True)

    # Data
    origin = Column(URLType, nullable=False, unique=True)

    # Functions
    @classmethod
    def prep_url(cls, url):
        return url.origin

x = furl('https://stackoverflow.com/questions/ask')
ws = Website(origin=Website.prep_url(x))
>>> ws.origin
stackoverflow.com

Хотя я бы хотел использовать его так:

ws = Website(origin=x)
>>> ws.origin
stackoverflow.com

Я подумал, что, возможно, этот ответ был тем, что я искал, но я не могу найти документацию для него.

1 Ответ

0 голосов
/ 13 января 2019

Как насчет использования свойства / сеттера ?

class Website(Base, Timestamp):
    __tablename__ = "websites"

    id = Column(Integer, primary_key=True)

    # Data
    origin_ = Column("origin", URLType, nullable=False, unique=True)

    @property
    def origin(self):
        return self.origin_

    @origin.setter
    def origin(self, url):
        self.origin_ = url.origin

x = furl('https://stackoverflow.com/questions/ask')
ws = Website(origin=x)
>>> ws.origin
stackoverflow.com
...