首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何使用SQL Alchemy和SQL Alchemy Utils URLType使其只保存主机名?

如何使用SQL Alchemy和SQL Alchemy Utils URLType使其只保存主机名?
EN

Stack Overflow用户
提问于 2019-01-13 08:48:17
回答 1查看 92关注 0票数 0

我目前正在一个项目中使用SQL Alchemy和SQL Alchemy Utils URLType,我被卡住了,试图弄清楚如何清理SQLAlchemy属性的输入,以便数据库中唯一存储的东西是furl对象的宿主。目前我已经解决了这个问题,只需在每个set操作之前调用一个类方法,如下所示:

代码语言:javascript
运行
复制
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

虽然我希望能够像这样使用它:

代码语言:javascript
运行
复制
ws = Website(origin=x)
>>> ws.origin
stackoverflow.com

我想也许this answer就是我要找的东西,但是我找不到它的文档。

EN

回答 1

Stack Overflow用户

发布于 2019-01-13 09:55:48

使用property/setter怎么样?

代码语言:javascript
运行
复制
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
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54165224

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档