Я использую метод itersorted в PyTables. Все строки возвращаются правильно, когда для шага установлено положительное значение, но первая строка не возвращается при использовании отрицательного значения шага. Как получить полный набор строк при использовании отрицательного значения шага?
Вот некоторый тестовый код, который показывает проблему:
import tables
class DBEntry(tables.IsDescription):
id = tables.Int16Col()
class Test(object):
def __init__(self, parent = None):
pass
def create_db_entries(self):
db = tables.open_file("py_db_test.h5", mode = "w", title = "db")
table = db.create_table('/', 'test', DBEntry, "test")
entry = table.row
for i in range(0, 5):
entry['id'] = i
entry.append()
table.flush()
table.cols.id.create_csindex()
db.close()
def get_db_entries(self):
db = tables.open_file("py_db_test.h5", mode = "r")
entries = db.root.test
print('ascending (all rows showing)')
for row in entries.itersorted('id', start = None, stop = None, step = 1):
print(row['id'])
print('decending (missing first row)')
for row in entries.itersorted('id', start = None, stop = None, step = -1):
print(row['id'])
db.close()
if __name__ == '__main__':
test = Test()
test.create_db_entries()
test.get_db_entries()