Распечатать строку 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 для использования в других местах ваших моделей.