SQLAlchemy分解DateTime字段

时间:2012-07-12 15:09:35

标签: python orm sqlalchemy

我有一个表格模型:

class MyModel(base):
    # ...
    datetime = Column(DateTime)
    # ...

并希望创建与.date列对应的.time.datetime属性。 SQLA文档显示了几个组合属性(例如firstname + lastname => fullname)的示例,但没有用于分解的内容。

我认为使用@hybrid_property和朋友我可以进行初始分解,但我不确定分配(因此如果n = MyModel.query...one()我希望能够n.date = d并让它更新{ {1}}字段。)

我的主要RDBMS是MySQL。

(对于那些对我想要这样做的动机感兴趣的人:我有很多客户端代码,这些代码是鸭子类型,以期望.datetime.date字段但是很多存储过程和服务器上的触发器需要一个.time列。)

1 个答案:

答案 0 :(得分:1)

docs say explicitly that you can do this,您需要使用@hybrid.property@value.setter装饰器以及您自己的代码以预期的格式返回日期或时间:

from sqlalchemy.ext.hybrid import hybrid_property

class SomeClass(object):
    @hybrid_property
    def value(self):
        return self._value

    @value.setter
    def value(self, value):
        self._value = value

完全披露:我使用了property功能,但未使用setter功能。