1

这一行:

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

回报:

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

我用它来查找匹配项:

if recipient in used_emails:

如果找到匹配项,我需要从数据库的同一行中提取另一个字段(halo4.c.code)。关于如何做到这一点的任何建议?

4

1 回答 1

0

我会说我的 SQLAlchemy 经验是有限的(所以很抱歉,如果这太离谱了),但是当你得到你的结果时,创建一个字典(而不是列表)是否可行,以 为键email,用代表行中所有数据的值 ( SELECT *)?这样,如果您找到匹配的电子邮件,您可以引用该键的值并提取您需要的数据(即halo4.c.code)。这应该会为您节省另一个数据库命中,因为该值将存在于您的字典中。

在 Python 2.7 中,类似:

used_emails = {row.email: row.code for row in select([halo4.c.email, halo4.c.code], halo4.c.email != '')}

或者在 Python 2.6 中:

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

然后你可以使用类似的东西:

if recipient in used_emails:
    # This may not be the proper syntax - happy to troubleshoot if not
    print used_emails[recipient]
于 2012-11-05T01:51:18.313 回答