TransactionalTable - Интерфейс транзакционной таблицы

class axioma.core.dp.TransactionalTable

Абстрактный класс, представляющий транзакционную таблицу. Из редактируемой таблицы EditableTable можно получить транзакционную, используя функцию wrap()

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

Методы:

insert(cursor, description=str())

Вставить записи в таблицу

Параметры:
  • cursor (Cursor) – итератор по записям
  • description (str) – описание операции
insert(feature_list, description=str())

Вставить записи в таблицу

Параметры:
  • feature_list (list [Feature]) – список записей
  • description (str) – описание операции
remove(cursor, description=str())

Удалить записи из таблицы

Параметры:
  • cursor (Cursor) – итератор по записям
  • description (str) – описание операции
remove(feature_list, description=str())

Удалить записи из таблицы

Параметры:
  • feature_list (list [Feature]) – список записей
  • description (str) – описание операции
update(cursor, description=str())

Обновить записи в таблице

Параметры:
  • cursor (Cursor) – итератор по записям
  • description (str) – описание операции
update(feature_list, description=str())

Обновить записи в таблице

Параметры:
  • feature_list (list [Feature]) – список записей
  • description (str) – описание операции
commit()

Внести все изменения в таблицу

restore()

Отменить все изменения таблицы

axioma.core.dp.wrap(edit_table)

Обернуть редактируемую таблицу в транзакционную. Файл транзакции будет создан, если это возможно, в директории с данными редактируемой таблицы, иначе будет создан временный файл.

Параметры:edit_table (EditableTable) – редактируемая таблица
axioma.core.dp.wrap(edit_table, file_path)

Обернуть редактируемую таблицу в транзакционную

Параметры:
  • edit_table (EditableTable) – редактируемая таблица
  • file_path (str) – путь к файлу транзакции, который будет создан

Пример использования:

# Открываем таблицу
table = open_file('world.tab')
if table is not None:
    # Формируем данные для последующей вставки
    index_geometry = table.tableSchema().indexOf('object')
    index_style = table.tableSchema().indexOf('tr$$_rendition')
    new_feature =  Feature.createFeature(table.tableSchema())
    poly = QPolygonF();
    v = 1000000
    poly << QPointF(-v, -v) << QPointF(-v, v) << QPointF(v, v) << QPointF(v, -v) << QPointF(-v, -v)
    polygon = Polygon(table.coordSystem(), poly)
    new_feature.setAttribute(index_geometry, polygon)
    new_feature.setModified(index_geometry, True)
    style = MapBasicStyle().styleFromString('Pen (1,2,0) Brush (2, 65280, 16777215)')
    new_feature.setAttribute(index_style, style)
    new_feature.setModified(index_style, True)
    # Можно произвести дополнительную проверку, создана ли для данной таблицы обертка.
    if isinstance(table, TransactionalTable):
        # Если да, то сразу можно производить изменения
        table.insert([new_feature])
        table.commit()
    else:
        # Если нет, то создаем ее посредством wrap
        ttable = wrap(table)
        # Вставляем новую запись
        ttable.insert([new_feature])
        # Сохраняем изменения
        ttable.commit()