Python sqlite fetchall() および fetchmany() ステートメントが、元のキーの順序ではなく、ソートされたキーの順序で結果を返すことに気付きました。たとえば、次のことを考慮してください。
list_indexes = [9, 5, 2, 8, 3, 7]
indexsize = len(list_indexes)
cursor.arraysize = indexsize
cursor.execute("select index, details from this_table where index in (%s)" % ','.join('?' * len(list_indexes)), list_indexes)
rows = cursor.fetchmany(indexsize)
行の返される順序は、ソートされたキーの順序 [2、3、5、7、8、9] です。
何か見逃したことがありますか、それともこれがデフォルトの動作ですか? もしそうなら、引数のインデックスで行を再ソートするという明らかな回避策とは別の回避策はありますか?