1

我有一个形式的模型:

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

并想创建一个.date.time该列相对应的属性.datetime。SQLA 文档显示了一些组合属性的示例(例如firstname + lastname => fullname),但没有用于分解。

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

我的主要 RDBMS 是 MySQL。

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

4

1 回答 1

1

文档明确说您可以这样做,您需要使用@hybrid.propertyand@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功能。

于 2012-07-14T03:42:42.837 回答