Как получить доступ к значению «считать» как dict / свойство в sqlalchemy с group_by? - PullRequest
0 голосов
/ 16 мая 2019

Я делаю очень простой запрос, используя ORM SQLAlchemy, в котором я ожидаю получить столбец (тип), а также его вхождения для каждого значения (count с group by).

Я могу получить доступ к столбцу type, обратившись к свойству type объекта server (как показано в приведенном коде).

Я также могу получить доступ к столбцу count, открыв индекс 0 для объекта server.

Мой вопрос: есть ли простой способ получить доступ к столбцу count как dict / свойство? Например: server.count

Я тщательно осмотрел объект server, используя dir(), но не смог найти никаких свойств, которые бы возвращали значение count.

class Server(Base):
    __tablename__ = 'servers'

    id = Column(Integer, primary_key=True)
    type = Column(String)
    method = Column(String)

    def __repr__(self):
        return "<Server(type='%s', method='%s')>" % (self.type, self.method)

session = Session()

servers = session.query(func.count(Server.type), Server.type).group_by(Server.type).all()

for server in servers:
    print(server[0], server.type)

1 Ответ

0 голосов
/ 18 мая 2019

Нашли ответ на мой вопрос после перечитывания официального руководства по ORM

Все, что мне нужно сделать, это установить метку для столбца, для которого в моем классе нет соответствующего свойства.

Итак, вместо этого:

servers = session.query(func.count(Server.type), Server.type).group_by(Server.type).all()

Я должен сделать это:

servers = session.query(func.count(Server.type).label('total_count'), Server.type).group_by(Server.type).all()

Затем я могу получить доступ к свойству total_count (предоставляется функцией label):

for server in servers:
    print(server.type, server.total_count)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...