打印sqlalchemy行

时间:2016-06-28 09:27:21

标签: python sql postgresql 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 个答案:

答案 0 :(得分:0)

要清楚 - 你想要一个通用的方法来打印" 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类中,以便在模型中的其他位置使用。