0

Python で一連の mySQL 行を反復処理し、各行を処理した後、それを変更したいと考えています。

cursor.execute("SELECT someNonUniqueColumn,hasBeenProccessed 
                FROM myTable WHERE hasBeenProcessed = 0")
for row in cursor:
    # use someNonUniqueColumn for something...
    ...
    # set "hasBeenProccessed" to 1

次の醜さを回避したい: - レコードを処理するたびに別の SQL クエリを実行する必要がある、または - 処理するときに行の ID を配列に入力する (どちらも一意のキーを追加する必要があります)テーブルに)

それで、「私が行くときにこれらをチェックする」方法はありますか?

4

2 に答える 2

1

いいえ、行をペースで変更する方法はありません。これにはいくつかの理由があります。そのうちの1つは、クエリによって返される値が更新できない可能性があることです。カウント、合計、その他の集計関数を考えてください。

非常に少量のデータベース操作を行う場合は、IDを保存して複合updateステートメントを発行するのが最適です。

プログラムで1〜2を超えるクエリを発行する場合は、自分で賛成してSQLAlchemyまたはDjangoORMを学習してください。どちらも完全に透過的ではありませんが、どちらも膨大な時間とデバッグの手間を省くことができます。

于 2013-03-20T15:49:07.570 に答える
0

変更/処理を行った後にクエリを実行しない理由

UPDATE myTable SET hasBeenProcessed = 1 WHERE hasBeenProcessed = 0

もちろん、これが可能であれば:)

于 2013-03-20T16:05:38.800 に答える