与Flask,SQLAlchemy将许多关系添加到一个关系时出现问题

时间:2018-08-27 19:24:47

标签: python flask sqlalchemy flask-sqlalchemy

首先,请忍受我,因为我对Python / Flask和SQLAlchemy还是很陌生。我正在尝试在两个模型之间创建一对多关系,它们是:

class Stock(db.Model):
    __tablename__ = 'stocks'

    id = db.Column(db.Integer, primary_key=True)
    ...
    users = db.relationship('User', secondary=user_identifier)
    historical_prices = db.relationship('HistoricalPrice', backref='stock', lazy=True)

class HistoricalPrice(db.Model):
    __tablename__ = 'historical_prices'

    id = db.Column(db.Integer, primary_key=True)
    ...
    stock_id = db.Column(db.Integer, db.ForeignKey('stock.id'), nullable=False)

请注意,UserStock之间存在某种关系,目前可以正常使用。我遇到的问题是在StockHistoricalPice之间。

完成迁移和更新后,在我的代码中,我有:

stock = Stock.query.last()
historical = HistoricalPrice(name='Test')
stock.historical_prices.append(historical)

但是随后出现以下错误:sqlalchemy.exc.NoForeignKeysError: Could not determine join condition between parent/child tables on relationship Stock.historical_prices - there are no foreign keys linking these tables. Ensure that referencing columns are associated with a ForeignKey or ForeignKeyConstraint, or specify a 'primaryjoin' expression.

我使用了此page上的信息来建立关系。

我在这里想念什么?

1 个答案:

答案 0 :(得分:2)

您在ForeignKey中拼写了表格名称:

stock_id = db.Column(db.Integer, db.ForeignKey('stocks.id'), nullable=False)

您的表名为stocks,而不是stock