[英]Accessing join query results in SQLAlchemy
如果我有:
query = db.session.query(Food, Person).filter(Food.id == Person.favourite_food)
for row in db.session.execute(query)
print row
我得到的第一个打印的输出是:
(1, u'Alice', 25, u'F', u'z', None, False, 1, u'icecream', 1, None, False)
(5, u'Bob', 38, u'M', u'z', None, False, 3, u'pizza', 1, None, False)
我该怎么办:
print row.name, row.gender # <-- how do I do this?
结果似乎不再具有列名。
编辑:还有一种方法可以只用一行来序列化查询结果,就像
return Response(json.dumps(query.results), mimetype='application/json')
当您指定
query(Food, Person)
结果行将为sqlalchemy.util._collections.result类型,并且将具有两个字段:Food和Person
Food部分可以通过row [0]或row引用。FoodPerson部分可以通过row [1]或row.Person引用
所以例如
print(row.Person.name, row.Person.gender) # works
print(row[1].name, row[1].gender) # also works
如果只需要特定的字段,则可以在查询中指定它们,例如:
query = (db.session.query(Person.name, Person.gender, Food.name.label('foodname'))
.filter(Food.id == Person.favourite_food))
然后该对象将具有3个字段:姓名,性别,食品名
print(row.name, row.gender, row.foodname)
您可以不同地执行查询:
for row in query.all():
print row[1].name, row[1].gender
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.