AttributeError:“InstrumentedAttribute”对象和“Comparator”对象都没有关联

时间:2016-08-28 15:48:48

标签: flask sqlalchemy foreign-keys

我有一个表定义为

class Results(db.Model):
    __tablename__ = 'results'
    event_id = db.Column(db.Integer, db.ForeignKey(Events.id), primary_key=True)
    event = db.relationship('Events', foreign_keys='Results.event_id')
    team_id = db.Column(db.Integer, db.ForeignKey(Teams.id), primary_key=True)
    team = db.relationship('Teams', foreign_keys='Results.team_id')
    position = db.Column(db.Integer, default=0)
    rr_position = db.Column(db.Integer, default=0)
    score = db.Column(db.Float, default=0)

class Teams(db.Model):
    __tablename__ = 'teams'
    id = db.Column(db.Integer, primary_key=True)
    name = db.Column(db.String(64), nullable=False)
    country = db.Column(db.String(64), nullable=False)

当我运行以下

r = Results.query.all()
print(len(r))

我得到138行。

如果我跑

r =  db.session.query(Teams.name
    , Results.team_id
    , Results.event_id).all()
print(len(r))

r = Results.query.add_column(Teams.name).all()
print(len(r))

然后我得到6072行。通过此查询,我预计每行有138行和一个团队名称。

但如果我尝试

r ==  db.session.query(Results.team.name
    , Results.team_id
    , Results.event_id).all()

我收到以下错误

AttributeError:与Instru.team关联的'InstrumentedAttribute'对象和'Comparator'对象都没有属性'name'

1 个答案:

答案 0 :(得分:0)

您是否尝试在执行查询时明确指定联接?

例如:

db.session.query(Results.team_id, Results.event_id, Team.name).join(Team).all()

我假设在>的情况下返回6000个条目,您将获得笛卡尔结果。