SQLAlchemy Ошибка сопоставления/присоединения отношения «один ко многим»

Я хочу создать связь между динамиком и записями. Спикер может иметь несколько записей

но была показана ошибка ниже:

sqlalchemy.exc.InvalidRequestError: класс не имеет сопоставленного столбца с именем «speaker_id»

Модель динамика:

class Speaker(Base):
    __tablename__ = 'speakers'
    id       = db.Column(db.Integer,     primary_key=True)
    cin      = db.Column(db.String(8),  unique = True)
    nom      = db.Column(db.String(64))
    prenom   = db.Column(db.String(64))
    adresse  = db.Column(db.String(120))
    datedn   = db.Column(db.String(20)) 
    genre    = db.Column(db.String(64))
    phone    = db.Column(db.Boolean, default=False)
    profession = db.Column(db.String(120))
    records  = db.relationship('Record', backref="owner", primaryjoin="Speaker.id==Record.speaker_id")
    created  = db.Column(db.DateTime, default=datetime.datetime.utcnow)

Рекордная модель:

class Record(Base):
    __tablename__ = 'record'
    id       = db.Column(db.Integer, primary_key=True)
    path     = db.Column(db.String(500))
    created  = db.Column(db.DateTime, default=datetime.datetime.utcnow)
    speaker_id = db.column(db.Integer, db.ForeignKey('speakers.id'))

Я пробовал отношения без primaryjoin, но у меня была эта ошибка:

sqlalchemy.exc.NoForeignKeysError: Не удалось определить условие соединения между родительскими и дочерними таблицами в отношениях Speaker.records — нет внешних ключей, связывающих эти таблицы. Убедитесь, что ссылающиеся столбцы связаны с ForeignKey или ForeignKeyConstraint, или укажите выражение 'primaryjoin'.

что мне здесь не хватает?


person Anouar Kacem    schedule 31.05.2020    source источник


Ответы (1)


Это немного опечатка, но то, что время от времени всплывает: буква c в «столбце» должна быть написана с большой буквы в 6-й строке класса Record (в строке идентификатора динамика).

person Shrey Sahgal    schedule 31.05.2020