SignalingCursor - Итерируемый объект по записям с сигналом

class axioma.core.dp.SignalingCursor

Оборачивает объект типа Cursor и добавляет сигнал при каждой итерации

Унаследован от:

SignalingCursor(cursor, parent=None)

Конструктор

Параметры:
  • cursor (Cursor) – Оборачиваемый объект
  • parent (QObject или None) – Родительский объект
abort()

Прервать инерации. Переводит Итератор в состояние, аналогичное завершению просмотра всех записей.

moved(count)

[signal] Испускается при каждой итерации

Параметры:count (int) – Номер инерации
Пример подключения прогресса при перемещении по записям курсора. После 10-й записи прерываем выполнение.
        import axioma.core
        from axioma.core.dp import *

        table = axioma.core.open_json({'src': '/tmp/world.tab'})
        if not table:
                raise RuntimeError("Нет открытых таблиц")
        cursor=table.select(QuerySelectAll(table.attributeNames())) # Запрашиваем все данные и открывем курсор
        signaling_cursor=SignalingCursor(cursor) # Оборачиваем курсор

        def local_slot(count): # Функция выполняется при итерации по строкам до значения 10
                print("Запись -->"+str(count))
                if count >= 10:
                        print("Прервано на итерации #10")
                        signaling_cursor.abort() # Прерывание выполнения

        signaling_cursor.moved.connect(local_slot) # Подключаем функцию к событию перемещения на другую строку курсора
        for feature in signaling_cursor:
                print(feature.getAttribute(0))