SQLALchemy query all()但获取列表中的特定字段

SQLALchemy query all()但获取列表中的特定字段,sqlalchemy,Sqlalchemy,我有一个select语句,其中我获取特定名称的所有ID: 从表1中选择名称,其中id=100 var1=DBSession.query(table1).filter(table1.id==100).first().name 这只返回id为100的名字值。但是,我的查询会产生多个名称,我必须像这样使用all子句 varlist=DBSession.query(table1).filter(table1.id==100).all() 然后我尝试从varlist访问name,比如 for i in

我有一个select语句,其中我获取特定名称的所有ID: 从表1中选择名称,其中id=100

var1=DBSession.query(table1).filter(table1.id==100).first().name
这只返回id为100的名字值。但是,我的查询会产生多个名称,我必须像这样使用all子句

varlist=DBSession.query(table1).filter(table1.id==100).all()
然后我尝试从varlist访问name,比如

for i in varlist:
    otherlist.append(varlist.name)
因为此查询不会将所有名称都放在列表中:

varlist=DBSession.query(table1).filter(table1.id==100).all().name
有人能告诉我如何在不使用中间列表的情况下将.all()中的名称直接输入到“varlist”中吗?

这个
all()
方法只是对查询调用
list
的语法糖。既然你想要的是一个列而不是实体,像这样的东西应该可以用

names = [name for name, in DBSession.query(table1.name).filter(table1.id == 100)]

使用.all()稍微修改@Jared的结果,使其看起来更好:


namelist=[DBSession.query(table1)中n的n.name.filter(table1.id==100)。all()]也可以工作。谢谢你,贾里德。

这会给你一个1元组列表。您仍然需要类似于
names=map(itemgetter(0),results)
的东西来获得一个简单的列表。为什么我们需要逗号呢?@Tania逗号用于解压查询返回的元组(实际上是一个子类)。这与解包多个元组变量一样,只是没有其他元组变量。