我正在使用Flask和SQLAlchemy。
我尝试引用同一个表中的列来创建树结构,使用附加表来存储所有祖先 - 子连接,而不仅仅是父子连接。
我已使用此处的示例https://stackoverflow.com/a/5652169/2947812,而我在models.py中的代码是:
# -*- coding: utf-8 -*-
from my_app import db
Cats_hierarchies = db.Table('cats_hierarchies', db.MetaData(),
db.Column('parent_id', db.Integer, db.ForeignKey('category.id')),
db.Column('category_id', db.Integer, db.ForeignKey('category.id'))
)
class Category(db.Model):
__tablename__ = 'category'
id = db.Column(db.Integer, primary_key=True)
children = db.relationship("Category",
secondary = Cats_hierarchies,
primaryjoin = Cats_hierarchies.c.category_id == id,
secondaryjoin = Cats_hierarchies.c.parent_id == id,
backref="children")
当我尝试使用from my_app import db
创建数据库时,收到以下错误消息:sqlalchemy.exc.NoReferencedTableError: Foreign key associated with column 'cats_hierarchies.category_id' could not find table 'category' with which to generate a foreign key to target column 'id'
我做错了什么?
答案 0 :(得分:1)
我通过添加
来消除错误foreign_keys =
[Cats_hierarchies.c.parent_id,
Cats_hierarchies.c.category_id])
到Category.children定义。
仍然不知道为什么有必要。在这里找到它:https://stackoverflow.com/a/8809907/2947812