在SQLAlchemy中没有foreignKey定义多对多

时间:2017-04-13 21:14:46

标签: python sqlalchemy

我有我想建模的现有数据。它本质上是:

class Investor(db.Model):
    id = db.Column(id, primary_key=True)
    investments = db.relationship('Investments', backref='investor')

class Round(db.Model):
    id = db.Column('id', primary_key=True)

investments = db.Table(
    'investments',
    db.Column('investor_id', db.ForeignKey('investor.id')),
    db.Column('round_id', db.ForeignKey('round.id')),
)

现在,每次尝试执行这个小模型时,都会出现以下错误: 表达'投资'找不到名字

我理解,投资需要成为一个类,但我已经尝试用db.model创建一个虚拟类,但它还没有真正起作用。在那个版本中,我遇到了要求主要连接或映射器的问题。我很困惑,一点指导会有很大帮助。

1 个答案:

答案 0 :(得分:1)

如果多对多关系介于InvestorRound之间,您可以按如下方式定义模型:

class Investor(db.Model):
    id = db.Column(db.Integer, primary_key=True)
    rounds = db.relationship('Round', secondary=investments, backref='investor')

class Round(db.Model):
    id = db.Column(db.Integer, primary_key=True)

investments = db.Table(
    'investments',
    db.Column('investor_id', db.Integer, db.ForeignKey('investor.id')),
    db.Column('round_id', db.Integer, db.ForeignKey('round.id')))