我有一个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)发布于 2020-01-23 06:28:08
有一种方法可以使用values方法从filter_by查询返回特定列。如下所示:
emails = [r[0] for r in db.session.query(my_table).filter_by(name=name).values('email')]或者:
emails = [r[0] for r in User.query.filter_by(name=name).values('email')]values()接受任意数量的字段名作为参数,并返回一个生成器,该生成器具有来自每个字段名的每个值的元组。使用列表理解来获取该元组emails的第一项,然后将是一个纯字符串电子邮件地址列表。
https://stackoverflow.com/questions/31842159
复制相似问题