我正在尝试在SqlAlchemy中编写一个辅助函数,它允许我从表中传递一行,然后它将打印出该行中每列的标题以及存储在每列中的值。目标是能够打印条目的所有属性,而无需单独调用每个列,甚至不需要知道每个列的调用。
到目前为止我来自this question。它看起来像这样:
def printModel(model):
columns = [m.key for m in model.__table__.columns]
for x in columns:
print x
someModel = SomeTable.query.get(someID)
printModel(someModel)
到目前为止所做的只是打印掉该对象中列的名称。有没有办法让我打印出列的名称和这些列中的值?
非常感谢, 亚历
答案 0 :(得分:1)
您可以使用getattr
def printModel(model):
columns = [m.key for m in model.__table__.columns]
for x in columns:
print x, getattr(model, x)
答案 1 :(得分:0)
更整洁的解决方案是使用dict理解和检查类
from sqlalchemy import inspect
{ c_attr.key:getattr(obj, c_attr.key) for c_attr in inspect(model).mapper.column_attrs }
同时利用getattr。