我有一个表格模型:
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
列。)
答案 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
功能。