Sqlachemy не возвращает запрос postgresql

Начал изучать Sqlachemy создал пару запросов на добавление и count(), но столкнулся с проблемой получения данных с БД.

Запросы на добавление и иного рода работают без перебоев

Вот сам запрос:

class DBCommands:
session = Sessionmaker()

    def get_user(self, telegram_id):
        user = self.session.query(Users).where(Users.telegram_id == telegram_id).all()
        return user

Таблица:

class Users(Base):
__tablename__ = "Users"

id = Column(Integer(), primary_key=True)
telegram_id = Column(BigInteger(), nullable=False, unique=True)
first_name = Column(String(50))
username = Column(String(50))

def __init__(self, telegram_id, first_name, username):
    self.telegram_id = telegram_id
    self.first_name = first_name
    self.username = username

тестовый вызов:

print(DBCommands().get_user(123123123))

*В таблице Users есть пользователь с таким id

Возвращает:

[<__main__.Users object at 0x0000027E5778AB80>]

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


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

Автор решения: CrazyElf

По документации должен был вернуться список, но что то пошло не так

[<__main__.Users object at 0x0000027E5778AB80>]

Это и есть список - видите квадратные скобки вокруг [ ... ]? Это список объектов Users, состоящий из одного такого объекта. Просто в самом классе Users вы не добавили методы __repr__ и __str__, поэтому объекты класса Users при печати отображаются вот в таком причудливом виде, это нормально. Хотите "человеческой" печати - определите хотя бы один из указанных мной методов, а лучше оба, так правильнее.

Простейший вариант реализации __str__, который даст нужный эффект:

    def __str__(self):
        return f'User {self.telegram_id}-{self.first_name}-{self.username}'
→ Ссылка