Table - Таблица¶
-
class
axipy.da.
Table
¶ Базовые классы:
axipy.da.DataObject
Таблица.
Менеджер контекста сохраняет изменения и закрывает таблицу.
Пример:
with provider_manager.openfile('path/to/file.tab') as table: ... # При выходе из блока таблица будет сохранена и закрыта
См.также
Attributes:
Возможен ли откат на один шаг вперед.
Возможен ли откат на один шаг назад.
Система координат таблицы.
Сигнал об изменении данных таблицы.
Сигнал оповещения об удалении объекта.
Признак того, что таблица является редактируемой.
Таблица содержит несохраненные изменения.
Признак того, что объект данных является пространственным.
Признак того, что таблица является временной.
Название объекта данных.
Дополнительные свойства объекта данных.
Провайдер изначального источника данных.
Схема таблицы.
Сигнал об изменении схемы таблицы.
Доступные операции.
Methods:
close
()Пытается закрыть таблицу.
commit
()Сохраняет изменения в таблице.
count
([bbox])Возвращает количество записей, удовлетворяющих параметрам.
insert
(features)Вставляет записи в таблицу.
items
([bbox, ids])Запрашивает записи, удовлетворяющие параметрам.
itemsByIds
(ids)Запрашивает записи по списку
list
с идентификаторами записей, либо перечень идентификаторов в виде списка.itemsInObject
(obj)Запрашивает записи с фильтром по геометрическому объекту.
itemsInRect
(bbox)Запрашивает записи с фильтром по ограничивающему прямоугольнику.
redo
()Производит откат на один шаг вперед.
remove
(ids)Удаляет записи из таблицы.
restore
()Отменяет несохраненные изменения в таблице.
undo
()Производит откат на один шаг назад.
update
(features)Обновляет записи в таблице.
-
close
()¶ Пытается закрыть таблицу.
- Исключение
RuntimeError – Ошибка закрытия таблицы.
Примечание
Объект данных не всегда может быть сразу закрыт. Например, для таблиц используется транзакционная модель редактирования и перед закрытием необходимо сохранить или отменить изменения, если они есть. См.
Table.is_modified
.
-
commit
()¶ Сохраняет изменения в таблице.
Если таблица не содержит несохраненные изменения, то команда игнорируется.
- Исключение
RuntimeError – Невозможно сохранить изменения.
-
count
(bbox=None)¶ Возвращает количество записей, удовлетворяющих параметрам.
Данный метод является наиболее предпочтительным для оценки количества записей. При этом используется наиболее оптимальный вариант выполнения запроса для каждого конкретного провайдера данных.
-
property
data_changed
¶ Сигнал об изменении данных таблицы. Испускается когда были изменены данные таблицы.
table = provider_manager.openfile(filepath) table.data_changed.connect(lambda : print('Таблица была изменена.'))
- Тип результата
Signal
-
property
destroyed
¶ Сигнал оповещения об удалении объекта.
- Тип результата
Signal
-
insert
(features)¶ Вставляет записи в таблицу.
-
items
(bbox=None, ids=None)¶ Запрашивает записи, удовлетворяющие параметрам. В качестве фильтра может быть указан либо ограничивающий прямоугольник, либо перечень идентификаторов в виде списка.
-
itemsByIds
(ids)¶ Запрашивает записи по списку
list
с идентификаторами записей, либо перечень идентификаторов в виде списка. Идентификаторы несохраненных записей имеют отрицательные значения.- Параметры
- Тип результата
- Результат
Итератор по записям.
table_world = provider_manager.openfile(filepath) # Пример запроса по списку идентификаторов. items = table_world.itemsByIds([11,27,41,163,203]) for f in items: print('Feature id={}. Страна={}'.format(f.id, f['Страна'])) # Просмотр идентификаторов всех записей, включая несохраненные for f in table_world.items(): print( f.id, f['Страна'] ) # Получение несохраненных записей совместно с сохраненными items_new = table_world.itemsByIds([-1,-12,27]) for f in items_new: print('Feature id={}. Страна={}'.format(f.id, f['Страна']))
-
itemsInObject
(obj)¶ Запрашивает записи с фильтром по геометрическому объекту.
- Параметры
obj (
Geometry
) – Геометрия. Если для нее не задана СК, используется СК таблицы.- Тип результата
- Результат
Итератор по записям.
table_world = provider_manager.openfile(filepath) v = 2000000 polygon = Polygon((-v, -v), (-v, v), (v, v), (v, -v)) items = table_world.itemsInObject(polygon) for f in items: print('Feature id={}. Страна={}'.format(f.id, f['Страна']))
-
itemsInRect
(bbox)¶ Запрашивает записи с фильтром по ограничивающему прямоугольнику.
- Параметры
bbox (
Union
[Rect
,QRectF
,tuple
]) – Ограничивающий прямоугольник.- Тип результата
- Результат
Итератор по записям.
table_world = provider_manager.openfile(filepath) v = 2000000 items = table_world.itemsInRect(Rect(-v, -v, v, v)) for f in items: print('Feature id={}. Страна={}'.format(f.id, f['Страна']))
-
redo
()¶ Производит откат на один шаг вперед. При этом возвращается состояние до последней отмены.
-
remove
(ids)¶ Удаляет записи из таблицы.
-
restore
()¶ Отменяет несохраненные изменения в таблице.
Если таблица не содержит несохраненные изменения, то команда игнорируется.
-
property
schema_changed
¶ Сигнал об изменении схемы таблицы. Испускается когда была изменена структура таблицы.
- Тип результата
Signal
-
property
supported_operations
¶ Доступные операции.
flags = table.supported_operations assert flags == SupportedOperations.ReadWrite assert flags & SupportedOperations.Insert assert SupportedOperations.Write in flags
- Тип результата
-
undo
()¶ Производит откат на один шаг назад.
-
update
(features)¶ Обновляет записи в таблице.
При обновлении проверяется
Feature.id
. Если запись с таким идентификатором не найдена, то она пропускается.modified_feature = Feature({'attr_name': 'new_value'}, id=1) table.update(modified_feature) table.commit()
См.также
-