Распечатать строку sqlalchemy

Все, что я хотел бы сделать, это напечатать одну строку строки таблицы sqlalchemy.

Скажи, что у меня есть:

from sqlalchemy import Column, Integer, String
from sqlalchemy.ext.declarative import declarative_base

Base = declarative_base()

class ATable(Base):
     __tablename__ = 'atable'  
     id = Column(Integer, primary_key=True) 
     name = Column(String(255), nullable=False)

Затем я хотел бы вывести все, что выглядит следующим образом:

id: 1
name: theRowName

Предпочтительнее без необходимости жесткого кода в столбцах таблицы, т.е. в более общем смысле.

Я пробовал:

 atable = Atable()
 ... #add some values etc.
 print atable
 print str(atable)
 print repr(atable)
 print atable.__table__.c

Как и мысль о реализации __str__ а также __repr__, но им опять не хватает запроса на общность.

Есть много вопросов о покрытии строки таблицы в JSON, но это не совсем то, чего я хочу, меня больше интересует визуальный вывод - он не должен быть машиночитаемым впоследствии.

1 ответ

Решение

Чтобы было понятно - вы хотите, чтобы общий метод печатал "col: value" без жесткого кодирования имен столбцов? Я не использую SQLAlchemy много, но __str__ такой метод должен работать:

def __str__(self):
    output = ''
    for c in self.__table__.columns:
        output += '{}: {}\n'.format(c.name, getattr(self, c.name))
    return output

Затем вы можете поместить этот метод в класс mixin для использования в других местах ваших моделей.

Другие вопросы по тегам