使用sqlalchemy删除数据时发生刷新错误

2024-06-26 04:22:40 发布

您现在位置:Python中文网/ 问答频道 /正文

我有以下两种模式。在

class Stop(Base):
    '''
        Class Model for Stops
    '''
    __tablename__ = 'STOPS'
    uid = Column('uid', Integer, primary_key=True, autoincrement=False)
    category_code = Column('category_code', String(60), nullable=False)

以及

^{pr2}$

当我试图使用下面的代码从两个表中删除数据时,我得到了以下错误

session.query(StopName).delete()
session.query(Stop).delete()

New instance <Stop at 0xf593d50> with identity key (<class 'harmonize_station_id.core.model.Stop'>, (400000000,)) conflicts with persistent instance <Stop at 0x3bdd850>

我也试着用cascade

stop = relationship("Stop", backref = 'name',cascade="delete")

我得到以下错误。在

AttributeError: 'StopName' object has no attribute '_sa_instance_state'.

Tags: instancekeyfalseuidsession错误codecolumn
1条回答
网友
1楼 · 发布于 2024-06-26 04:22:40

出现此问题是因为StopName的对象类型不匹配。在这里,我将客户机的Stop对象转换为服务器的Stop对象(数据库模型). 但我错过了StopName对象的相同转换。所以,它试图从它的客户端表示中创建StopName。所以,我显式地将它转换为服务器端的StopName。它解决了这个问题。 所以基本上,当sqlalchemy将其他类型的对象解释为ORM对象时,object has no attribute''u sa_instance_state'错误就会出现。在

相关问题 更多 >