Как правильно вывести данные из связанной таблицы? (Gino, PostgreSQL)

Подскажите, пожалуйста, как правильно связать таблицы ниже для корректного вывода данных?

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

Для этого я написала функцию, в которой из основной таблицы User user_id отправляются в таблицы Random_user и Random_user2 по признаку четности.

Есть три таблицы:

  1. User
  2. Random_user
  3. Random_user2
class User(TimedBaseModel):
    __tablename__ = 'users'
    user_id = Column(BigInteger, primary_key = True)
    first_name = Column(String(200))
    last_name = Column(String(200))
    user_name = Column(String(50))
    status = Column(String(30))
    number = Column(String(10))
class Random_user2(BaseModel):
    __tablename__ = 'random_user2'
    random_id = db.Column(db.Integer, primary_key=True)
    user_id_1 = db.Column(db.Integer, db.ForeignKey(User.user_id))

class Random_user(BaseModel):
    __tablename__ = 'random_user'
    random_id = db.Column(db.Integer, primary_key=True)
    user_id_2 = db.Column(db.Integer, db.ForeignKey(User.user_id))

Тестовый блок отправки сообщения юзерам ниже:

async def send_message_interval_random3(bot: Bot):
    random_users = await commands.select_all_random_users()
    random_users_couple = await commands.select_all_random_users_couple()
    for user in random_users, random_users_couple:
        try:
            text = (f'Твоя пара: {random_users_couple.user_id_1}')
            await dp.bot.send_message(chat_id=user.user_id_2, text=text)
        except Exception:
            for user_id in admins_id:
                text = ('Произошла ошибка при рассылке пар...')
                await dp.bot.send_message(chat_id=user_id, text=text)

Вызовы всех юзеров в таблицах Random_user и Random_user2:

async def select_all_random_users():
    random_users = await Random_user.query.gino.all()
    return random_users

async def select_all_random_users_couple():
    random_users_couple = await Random_user2.query.gino.all()
    return random_users_couple

Я ожидаю вывод данных из таблицы User для каждого юзера-пары и отправку этих данных другому юзеру.

Подскажите, пожалуйста, каким способом это лучше сделать?введите сюда описание изображения введите сюда описание изображения введите сюда описание изображения


Ответы (0 шт):