解決策③「すべてのキー値のリストを受けとり、ランダムに 1 つを選択する」では、当然の話だけどトランザクションの考慮も必要ですよねって話。なんだか書いてて当たり前すぎて消そうかと思ったけどもったいないので公開します笑 例えば以下のような手順をとるとする。 (execute_queryはクエリを実行して結果セットを良い感じに取得するメソッドを想像してください) ids = execute_query(u'SELECT bug_id FROM Bugs;') target_id = random.choice(ids) record = execute_query(u'SELECT * FROM Bugs WHERE bug_id = %d;' % target_id) この場合、target_idのレコードを3行目実行前に別のプロセスにより削除された場合はrecordを取得することができませ