我使用sa0.6.6,声明式风格,针对postgres8.3,将Python对象映射到数据库。我有一个自引用的表,我试图为它的子级创建一个关系属性。不管我怎么做,最后都会出现一个noreferenceddableerror。在
我的代码看起来与sample code from the SA website for how to do this very thing完全相同。在
这是课堂。在
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实体定义为字符串时,我也需要模式。在
破损:
固定的:
^{pr2}$我用SQLAlchemy 0.6.6和sqlite检查了您的代码。我能够创建表,添加父级和子级组合,并使用
session.query
再次检索它们。在据我所知,您提到的异常(
NoReferencedTableError
)是专门在schema.py
(在SQLAlchemy源代码中)抛出的,并且不是特定于数据库的。在一些问题:如果使用sqlite URL而不是Postgres URL,您是否看到相同的错误?如何创建模式?我的看起来像这样:
相关问题 更多 >
编程相关推荐