Python 表doen';t更新关联表中的值

Python 表doen';t更新关联表中的值,python,python-3.x,sqlalchemy,Python,Python 3.x,Sqlalchemy,我想更新表中具有一对多关系的列。 但是我想不出一种方法来使更新对关系表产生影响。这是一个代码示例,我尝试使用back\u populates来更改它,无论是否使用onupdate或cascade,但它似乎对我想要做的事情没有任何影响 class Employe(Base): __tablename__ = 'employes' id = Column(Integer, primary_key=True) service_name = Column(String, For

我想更新表中具有一对多关系的列。 但是我想不出一种方法来使更新对关系表产生影响。这是一个代码示例,我尝试使用
back\u populates
来更改它,无论是否使用
onupdate
cascade
,但它似乎对我想要做的事情没有任何影响

class Employe(Base):

    __tablename__ = 'employes'
    id = Column(Integer, primary_key=True)
    service_name = Column(String, ForeignKey('services.name', onupdate="CASCADE"))


class Service(Base):

    __tablename__ = 'services'

    name = Column(String, primary_key=True)
    employers = relationship('Employe', backref=backref('service', cascade="all"))



a = session.query(Service).filter_by(name='ECTC').update({'name' : 'SECTC'})
session.commit()
这确实会更改services.name,但不影响列service\u name。 所以当我想查询session.query(Employe).filter_by(service_name='SECTC')时,我没有得到任何结果 有没有办法使更新对两个表都产生影响? 否则,每当我需要更新服务时,我就可以选择、删除和重新创建员工,但这对我来说似乎不是最佳选择


谢谢你的帮助

既然您的服务名称不是常量,为什么不在
服务中添加一个整数主键
并将其用作外键呢?这将避免所有的数据完整性问题。嘿,伊万,谢谢你的回答,这个解决方案似乎至少对我迄今为止在代码上测试的内容有效。我是sqlachemy的新手,我不知道修改外键很难,这就是为什么我一开始尝试使用这种方法,但我想我现在明白了为什么我经常在表上看到id键了!既然您的服务名称不是常量,为什么不在
服务中添加一个整数主键
并将其用作外键呢?这将避免所有的数据完整性问题。嘿,伊万,谢谢你的回答,这个解决方案似乎至少对我迄今为止在代码上测试的内容有效。我是sqlachemy的新手,我不知道修改外键很难,这就是为什么我一开始尝试使用这种方法,但我想我现在明白了为什么我经常在表上看到id键了!