在SqlAlchemy中打印列标题和值

时间:2015-11-18 05:10:10

标签: python sqlalchemy

我正在尝试在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)

到目前为止所做的只是打印掉该对象中列的名称。有没有办法让我打印出列的名称和这些列中的值?

非常感谢, 亚历

2 个答案:

答案 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。