Python 我可以在Sqlalchemy中使用方法作为列吗?

Python 我可以在Sqlalchemy中使用方法作为列吗?,python,sqlalchemy,Python,Sqlalchemy,我希望当我保存一个用户时,会调用fullname,返回值会保存到db中的fullname列,并且从数据库加载对象后会调用set_fullname 我希望使用get/set方法的属性可以通过sqlalchemy配置为列您可能有自己的理由,但是:为什么需要具体化“全名”?你的名字真的只有两个字符吗?是否针对现有表执行此操作?在我看来,你可以改变你的想法:用first_name和last_name创建getter和setter,它们负责更新全名。abc将另存为列,d、e、f、g将被传输到json并保存

我希望当我保存一个用户时,会调用fullname,返回值会保存到db中的fullname列,并且从数据库加载对象后会调用set_fullname


我希望使用get/set方法的属性可以通过sqlalchemy配置为列

您可能有自己的理由,但是:为什么需要具体化“全名”?你的名字真的只有两个字符吗?是否针对现有表执行此操作?在我看来,你可以改变你的想法:用first_name和last_name创建getter和setter,它们负责更新全名。abc将另存为列,d、e、f、g将被传输到json并保存到数据库。因此,我希望在保存、更新和加载对象时能够调用一个解决方案。至少,您可以随意处理数据。当然,您可以使用触发器在DB中强制执行这些事情。还有另一半,但那只是另一半。我仍然相当肯定这是一个XY问题。还有一个问题,但这实际上与你的看法相反。谢谢你的帮助。但是它仍然有两个问题:第一,侦听器和重构器不能影响子类。因为我计划将子类保存在一个表中,不同的值将另存为json。我是否需要为每个子类编写重构器方法并添加侦听器?我计划创建一个方法并在超级类中进行配置您可能有自己的理由,但是:为什么需要实现“全名”?你的名字真的只有两个字符吗?是否针对现有表执行此操作?在我看来,你可以改变你的想法:用first_name和last_name创建getter和setter,它们负责更新全名。abc将另存为列,d、e、f、g将被传输到json并保存到数据库。因此,我希望在保存、更新和加载对象时能够调用一个解决方案。至少,您可以随意处理数据。当然,您可以使用触发器在DB中强制执行这些事情。还有另一半,但那只是另一半。我仍然相当肯定这是一个XY问题。还有一个问题,但这实际上与你的看法相反。谢谢你的帮助。但是它仍然有两个问题:第一,侦听器和重构器不能影响子类。因为我计划将子类保存在一个表中,不同的值将另存为json。我是否需要为每个子类编写重构器方法并添加侦听器?我计划创建一个方法并在超级类中进行配置
class User(Base):
    __tablename__ = 'user'
    id = Column(Integer, primary_key=True)

    def __init(self,first_name,last_name):
         self.first_name = first_name
         self.last_name = last_name 

    _fullname = Column("fullname", String)

    @property
    def fullname(self):
        return self.first_name + self.last_name

    @fullname.setter
    def set_fullname(self, fullname):
         self.first_name = fullname[0:2]
         self.last_name = fullname[2:]