Flask-SQLAlchemy: невозможно получить доступ к внешним ключам из таблицы ассоциации - PullRequest
0 голосов
/ 21 октября 2019

Я новичок в flask-sqlalchemy и mySQL .

У меня есть две таблицы с именами groups и switchboard . У меня также есть другая таблица ассоциаций с именем map_switchboard_group , которая состоит из внешних ключей (первичные ключи групп и коммутатора).

Я пишу маршрут, который выбирает все коммутатор присутствует в группе .

Теперь моя проблема в том, что я запрашиваю свою таблицу map_switchboard_group с помощью фильтра столбцов group_uuid. Я могу получить записи, но с доступен только столбец "id" (первичный ключ) и , остальные столбцы, которые являются внешними ключами, недоступны или даже не замечены в почтальоне.

Следовательно, если я не смогу получить доступ к switchboard_uuid (внешний ключ), то я не смогу получить связанные с этим коммутаторы.

Класс моей группы:

class Group(db.Model):
    __tablename__ = 'groups'
    group_uuid = db.Column(db.String(100), primary_key=True)
    group_name = db.Column(db.String(50))
    switchboard_count = db.Column(db.Integer, default=0)
    MapSwitchboardGroup = db.relationship('MapSwitchboardGroup', 
    backref='groups')

Класс My Switchboard:

class Switchboard(db.Model):
    __tablename__ = 'switchboard'
    switchboard_uuid = db.Column(db.String(100), primary_key=True)
    switchboard_name = db.Column(db.String(50))
    master_mac_id = db.Column(db.String(100), unique=True)
    MapSwitchboardGroup = db.relationship('MapSwitchboardGroup', 
    backref='switchboard')

Класс My MapSwitchboardGroup (Association):

class MapSwitchboardGroup(db.Model):
    __tablename__ = 'map_switchboard_group'
    id = db.Column(db.Integer, primary_key=True)
    group_uuid = db.Column(db.String(100), 
    db.ForeignKey('groups.group_uuid'))
    switchboard_uuid = db.Column(db.String(100), 
    db.ForeignKey('switchboard.switchboard_uuid'))

Мой запрос на выбор таблицы switchboard_uuid из моей таблицы map_switchboard_group:

switchboard_uuid_list = MapSwitchboardGroup.query.filter_by(group_uuid=group_uuid).all()

Ожидаемый вывод должен быть:

[ 
  {
    "id": 1,
    "group_uuid": "a2703a41-831f-4c6c-b995-1346bacd2ca3",
    "switchboard_uuid": "aa4fd8e7-9012-4c43-9f8e-baef3e968c57"
  }
]

Фактический вывод, который я получаю:

[
   {
     "id": 1
   }
]
...