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 шт):
По документации должен был вернуться список, но что то пошло не так
[<__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}'