不要在SQLAlchemy中返回整行

时间:2012-11-04 17:03:55

标签: python sqlalchemy

我的SQLAlchemy代码:

used_emails = list(db.execute(halo4.select(halo4.c.email != '')))

返回:

[(80940L, 'P7J4H-DFDMG-G6HMJ-W7PF9-MDTF1', '1', 'first.last@domain.com', datetime.datetime(2012, 11, 3, 3, 48, 58)), (80939L, 'GCTFY-QPK2Y-PX1CJ-W69QY-PHDGZ', '1', 'first.last@domain.com', datetime.datetime(2012, 11, 3, 15, 8, 15)), (80938L, 'R4XGV-PG461-RGXX7-9R47R-2RWYZ', '1', 'first.last@domain.com', datetime.datetime(2012, 11, 3, 15, 8, 27))]

如何让SQLAlchemy只返回:

[('first.last@domain.com', 'first.last@domain.com', 'first.last@domain.com')]

1 个答案:

答案 0 :(得分:0)

以下内容将列出email列值:

from sqlalchemy.sql.expression import select

used_emails = [row.email for row
               in db.execute(select([halo4.c.email], halo4.c.email!='')]

基本上,您告诉select()函数仅为SELECT列生成email语句。 execute()的结果将是ResultProxy,因此list comprehension的工作是从迭代中获取的单个列行创建email列字符串值的列表{ {3}}