我使用SQLAlchemy查询sqlite db,如下所示:
import db
...
results = session.query(table).all()
for result in results:
print result
print "how to print column name?"
下面是一个db类的代码片段:
class Device(Base):
__tablename__ = "devices"
name = Column(String(250), primary_key=True)
location = Column(String(250), nullable=False)
def __init__(self, name, location):
self.name = name
self.location = location
尝试使用“。column_descriptions”在结果中抛出“'list' object has no attribute 'column_descriptions'"错误。
动态获取列名和值的正确方法是什么?我希望这样做,这样我就可以构建一个函数来处理所有查询的JSON转换,而不是到处重复代码。
1条答案
按热度按时间k97glaaz1#
您可以使用
Device.__table__.columns
获取代码中Device
模型中的列列表。这些是Column
对象,您可以在迭代时对它们使用.name
来获取名称。然后当你查询的时候,你可以使用getattr
或者其他东西来获取你需要的值。编辑:
示例:
也许您还可以使用
select
语法。EDIT2:
这是一篇关于dictionary comprehension的文章
好的,这个字典理解所做的是,它从我查询的示例行中获取键作为列的名称,值作为相应列的值。
你想打印一个
list
,所以我们可以这样做:用这个替换字典理解行。
这将在列表中打印该行的值,但您不会获得列名。
但为此,您可以创建元组列表。
但是,要做到这一点,一个更简单的方法可能是使用SQLAlchemy提供的select语法。
文档地址: www.example.com