我有这个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"没有使用中间清单?
答案 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。