Python中的两个关联表+;烧瓶炼金术

Python中的两个关联表+;烧瓶炼金术,python,flask-sqlalchemy,Python,Flask Sqlalchemy,我正在尝试创建一个族谱,但是数据模型有点问题。我有一个表,它需要以两种方式引用自身,一种用于父子关系,另一种用于配偶关系。我尝试了下面的代码,但得到一个错误: sqlalchemy.exc.norReferencedTableError:与关联的外键 列“partners.so2_id”找不到要与之关联的表“member” 为目标列“member\u id”生成外键 有人会有指导吗?我试图继续读文档,但有点迷路了。谢谢你能给予的任何帮助 from flask_sqlalchemy import

我正在尝试创建一个族谱,但是数据模型有点问题。我有一个表,它需要以两种方式引用自身,一种用于父子关系,另一种用于配偶关系。我尝试了下面的代码,但得到一个错误:

sqlalchemy.exc.norReferencedTableError:与关联的外键 列“partners.so2_id”找不到要与之关联的表“member” 为目标列“member\u id”生成外键

有人会有指导吗?我试图继续读文档,但有点迷路了。谢谢你能给予的任何帮助

from flask_sqlalchemy import SQLAlchemy

db = SQLAlchemy()

# association table for parents<->children
children = db.Table('children',
                db.Column('child_id', db.Integer, db.ForeignKey('member.member_id')),
                db.Column('parent_id', db.Integer, db.ForeignKey('member.member_id'))
                )

# association table for spouses
spouses = db.Table('spouses',
               db.Column('so1_id', db.Integer, db.ForeignKey('member.member_id')),
               db.Column('so2_id', db.Integer, db.ForeignKey('member.member_id'))
               )


class Member(db.Model):
    """Node within the family tree."""

    __tablename__ = "members"

    member_id = db.Column(db.Integer, autoincrement=True, primary_key=True)
    first_name = db.Column(db.String(60), nullable=False)
    last_name = db.Column(db.String(40), nullable=False)
    eng_title = db.Column(db.String(20), nullable=True)
    alt_name = db.Column(db.String(50), nullable=True)
    lineage = db.Column(db.String(15), nullable=True)
    deceased = db.Column(db.Boolean, nullable=True)
    image_url = db.Column(db.String(80), nullable=True)
    parents = db.relationship('Member',
                          secondary=children,
                          primaryjoin=(children.c.child_id == member_id),
                          secondaryjoin=(children.c.parent_id == member_id),
                          backref=db.backref('children', lazy='dynamic'),
                          lazy='dynamic')
    spouse = db.relationship('Member',
                         secondary=spouses,
                         primaryjoin=(spouses.c.so1_id == member_id),
                         secondaryjoin=(spouses.c.so2_id == member_id),
                         backref=db.backref('spouses', lazy='dynamic'),
                         lazy='dynamic')
从flask\u sqlalchemy导入sqlalchemy
db=SQLAlchemy()
#parentschildren关联表
children=db.Table('children',
db.Column('child\u id',db.Integer,db.ForeignKey('member.member\u id')),
db.Column('parent\u id',db.Integer,db.ForeignKey('member.member\u id'))
)
#配偶关联表
配偶=数据库表(‘配偶’,
db.Column('so1_id',db.Integer,db.ForeignKey('member.member_id')),
db.Column('so2\u id',db.Integer,db.ForeignKey('member.member\u id'))
)
类成员(db.Model):
“”“族树中的节点。”“”
__tablename_=“成员”
member\u id=db.Column(db.Integer,autoincrement=True,primary\u key=True)
first_name=db.Column(db.String(60),nullable=False)
last_name=db.Column(db.String(40),nullable=False)
eng_title=db.Column(db.String(20),nullable=True)
alt_name=db.Column(db.String(50),nullable=True)
沿袭=db.Column(db.String(15),nullable=True)
deased=db.Column(db.Boolean,nullable=True)
image\u url=db.Column(db.String(80),nullable=True)
父项=数据库关系('成员',
中学=儿童,
primaryjoin=(children.c.child_id==成员_id),
secondaryjoin=(children.c.parent_id==成员_id),
backref=db.backref('children',lazy='dynamic'),
(动态的)
配偶=db.关系(“成员”,
次要=配偶,
primaryjoin=(partners.c.so1_id==成员_id),
secondaryjoin=(partners.c.so2_id==成员_id),
backref=db.backref('partners',lazy='dynamic'),
(动态的)

您在
ForeignKey
引用中使用了错误的表名-应该是
db.ForeignKey('members.member_id')
,因为这是您为
member
@SeanVieira Aha!定义的表名!我真傻。这似乎解决了问题。谢谢很高兴我能帮忙-欢迎来到StackOverflow!您在
ForeignKey
引用中使用了错误的表名-它应该是
db.ForeignKey('members.member_id')
,因为这是您为
member
@SeanVieira Aha>定义的表名!我真傻。这似乎解决了问题。谢谢很高兴我能帮忙-欢迎来到StackOverflow!