![](/img/trans.png)
[英]SQLAlchemy Many-to-Many Relationship on a Single Table Error: NoReferencedTableError
[英]SQLAlchemy Self Referencing Relationship - NoReferencedTableError
我使用针对Postgres 8.3的声明性样式SA 0.6.6将Python对象映射到数据库。 我有一个自引用的表,我正在尝试为其子项设置一个关系属性。 无论我尝试什么,最终都会遇到NoReferencedTableError。
我的代码看起来完全像SA网站上的示例代码,说明了如何执行此操作 。
这是课程。
class FilterFolder(Base):
__tablename__ = 'FilterFolder'
id = Column(Integer,primary_key=True)
name = Column(String)
isShared = Column(Boolean,default=False)
isGlobal = Column(Boolean,default=False)
parentFolderId = Column(Integer,ForeignKey('FilterFolder.id'))
childFolders = relationship("FilterFolder",
backref=backref('parentFolder', remote_side=id)
)
这是我得到的错误:
NoReferencedTableError:与列“ FilterFolder.parentFolderId”关联的外键找不到表“ FilterFolder”,通过该表可生成目标列“ id”的外键
有任何想法我在这里做错了吗?
就我而言,这是一个愚蠢的错误。 我通常通过指定实体类型而不是字符串来指定我的FK。 我使用的是不同的架构,因此在将FK实体定义为字符串时,我也需要该架构。
破碎:
parentFolderId = Column(Integer,ForeignKey('FilterFolder.id'))
固定:
parentFolderId = Column(Integer,ForeignKey('SchemaName.FilterFolder.id'))
我用SQLAlchemy 0.6.6和sqlite检查了您的代码。 我能够创建表,添加父子组合,然后使用session.query
再次检索它们。
据我所知,您提到的异常( NoReferencedTableError
)仅在schema.py
(在SQLAlchemy源代码中)中引发,并且不是数据库特定的。
一些问题:如果使用sqlite URL而不是Postgres URL,会看到相同的错误吗? 您如何创建架构? 我的看起来像这样:
engine = create_engine(db_url)
FilterFolder.metadata.create_all(self.dbengine)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.