Как использовать SQL Alchemy и SQL Alchemy Utils URLType, чтобы сохранить только имя хоста?
Я использую 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://stackru.com/questions/ask')
ws = Website(origin=Website.prep_url(x))
>>> ws.origin
stackru.com
Хотя я хотел бы иметь возможность использовать его так:
ws = Website(origin=x)
>>> ws.origin
stackru.com
Я подумал, что, возможно, этот ответ был тем, что я искал, но я не могу найти документацию для него.
1 ответ
Как насчет использования свойства / сеттера?
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://stackru.com/questions/ask')
ws = Website(origin=x)
>>> ws.origin
stackru.com