我有一个User
模型,用户可以使用相同的名称.我想获取具有给定名称的所有用户的电子邮件地址.但是,我必须对result[0].email
查询的结果执行以获取行的电子邮件.我可以使用for循环执行此操作,但是有没有办法只获取一个字段的列表而不必每次都这样做?
my_result = db.session.query(my_table).filter_by(name=name)
emails = []
for r in my_result:
emails.append(r.email)
Run Code Online (Sandbox Code Playgroud)
dav*_*ism 15
不,SQLAlchemy查询返回一个dicts列表的事实并没有真正解决方法.如果您想要一组特定的字段,则只能查询这些字段,但如果您想要一个字段的列表,则必须从结果中提取它.以下示例获取具有给定名称的用户的唯一电子邮件列表.
emails = [r.email for r in db.session.query(my_table.c.email).filter_by(name=name).distinct()]
Run Code Online (Sandbox Code Playgroud)
有一种方法可以filter_by
使用该values
方法从查询中返回特定列。如下:
emails = [r[0] for r in db.session.query(my_table).filter_by(name=name).values('email')]
Run Code Online (Sandbox Code Playgroud)
或者:
emails = [r[0] for r in User.query.filter_by(name=name).values('email')]
Run Code Online (Sandbox Code Playgroud)
values()
接受任意数量的字段名称作为参数并返回一个生成器,该生成器具有包含每个字段名称中每个值的元组。使用列表理解来获取该元组的第一项,emails
然后将是一个纯字符串电子邮件地址列表。
归档时间: |
|
查看次数: |
7060 次 |
最近记录: |