You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Oracle数据库中使用SQLAlchemy插入数据时Ancestor外键约束未生效问题

Oracle数据库中使用SQLAlchemy插入数据时Ancestor外键约束未生效问题

我创建了如下SQLAlchemy数据模型:

class AncestorTable(Base):
    __tablename__ = 'ancestor'

    id: Mapped[int] = mapped_column(primary_key=True)
    some_value: Mapped[float]

    parent: Mapped['ParentTable'] = relationship()

class ParentTable(Base):
    __tablename__ = 'parent'

    id: Mapped[int] = mapped_column(primary_key=True)
    ancestor_id: Mapped[int] = mapped_column(ForeignKey('ancestor.id'))
    some_value: Mapped[float]

    tables: Mapped[List['Table']] = relationship()

class Table(Base):
    __tablename__ = 'table'

    id: Mapped[int] = mapped_column(primary_key=True)
    ancestor_id: Mapped[int] = mapped_column(ForeignKey('ancestor.id'))
    parent_id: Mapped[int] = mapped_column(ForeignKey('parent.id'))
    some_value: Mapped[float]

这些对象会被插入到带有自增ID列的Oracle表中,插入代码如下:

with Session(engine) as session:
    session.add_all([responses])
    session.commit()

目前祖先表和父表的插入流程正常工作,ID也能按预期生成,而且父表中的ancestor_id外键约束也能正确生效。但最后一个table表出现了问题:ancestor_id的外键约束没有被强制执行。整体来看,父级关系的外键约束都能正常应用,但祖先级关系的约束却不行。

以下是table表的数据情况:

IDANCESTOR_IDPARENT_IDVALUE
1(null)121
2(null)137

我已经尝试过手动生成序列,也直接在Column子句中定义了autoincrement,但这两种方法都没能解决问题。

备注:内容来源于stack exchange,提问作者Bartosz

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.14 16:48:04