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 に答える