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

时间:2015-03-26 13:28:17

标签: sqlalchemy

我有这个select语句,我获取特定名称的所有ID: 从table1中选择名称,其中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访问名称,如

for i in varlist:
    otherlist.append(varlist.name)

因为此查询不会将所有名称都放在列表中:

varlist=DBSession.query(table1).filter(table1.id==100).all().name

有人能告诉我如何将.all()中的名字直接输入" varlist"没有使用中间清单?

2 个答案:

答案 0 :(得分:2)

all()方法只是用于在查询上调用list的语法糖。因此,既然您需要单个列而不是实体,那么这样的东西应该可以工作,

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

答案 1 :(得分:0)

略微修改@Jared的结果,使用.all():

使这看起来更好看

namelist = [n在DBSession.query(table1)中的n的名称.filter(table1.id == 100).all()]也有效。谢谢Jared。