QueryTable - SQL запрос.
- class axipy.QueryTable
Базовые классы:
Table
Таблица, построенная на основе SQL запроса.
Пример:
table = provider_manager.openfile('world.tab') query = data_manager.query('select * from world')
Свойства:
Возможен ли откат на один шаг вперед.
Возможен ли откат на один шаг назад.
Система координат таблицы.
Сигнал об изменении данных таблицы.
Сигнал оповещения об удалении объекта.
Наименование атрибута таблицы для хранения гиперссылки.
Признак того, что таблица является редактируемой.
Таблица содержит несохраненные изменения.
Признак того, что объект данных является пространственным.
Признак того, что таблица является временной.
Название объекта данных.
Дополнительные свойства объекта данных.
Провайдер изначального источника данных.
Схема таблицы.
Сигнал об изменении схемы таблицы.
Текст SQL запроса.
Доступные операции.
Методы:
close
()Пытается закрыть таблицу.
commit
()Сохраняет изменения в таблице.
count
([bbox])Возвращает количество записей, удовлетворяющих параметрам.
Возвращает область, в которую попадают все данные таблицы.
insert
(features)Вставляет записи в таблицу.
items
([bbox, ids])Запрашивает записи, удовлетворяющие параметрам.
itemsByIds
(ids)Запрашивает записи по списку
list
с идентификаторами записей, либо перечень идентификаторов в виде списка.itemsInObject
(obj)Запрашивает записи с фильтром по геометрическому объекту.
itemsInRect
(bbox)Запрашивает записи с фильтром по ограничивающему прямоугольнику.
redo
([steps])Производит откат вперед на заданное количество шагов.
remove
(ids)Удаляет записи из таблицы.
rollback
()Отменяет несохраненные изменения в таблице.
undo
([steps])Производит откат вперед на заданное количество шагов.
update
(features)Обновляет записи в таблице.
- close()
Пытается закрыть таблицу.
- Исключение:
RuntimeError – Ошибка закрытия таблицы.
Примечание
Объект данных не всегда может быть сразу закрыт. Например, для таблиц используется транзакционная модель редактирования и перед закрытием необходимо сохранить или отменить изменения, если они есть. См.
Table.is_modified
.
- commit()
Сохраняет изменения в таблице.
Если таблица не содержит несохраненные изменения, то команда игнорируется.
- Исключение:
RuntimeError – Невозможно сохранить изменения.
- property coordsystem: Optional[CoordSystem]
Система координат таблицы.
- count(bbox: Union[Rect, QRectF, tuple] = None) int
Возвращает количество записей, удовлетворяющих параметрам.
Данный метод является наиболее предпочтительным для оценки количества записей. При этом используется наиболее оптимальный вариант выполнения запроса для каждого конкретного провайдера данных.
- Параметры:
bbox – Ограничивающий прямоугольник.
- Результат:
Количество записей.
- property data_changed: SignalInstance
Сигнал об изменении данных таблицы. Испускается когда были изменены данные таблицы. В качестве параметра передается дополнительная информация в виде dict.
Наименование
Значение
Описание
operation
insert
Произведена вставка данных
operation
update
Данные были обновлены
operation
remove
Данные были удалены
operation
unknown
Тип операции не определен
ids
list
Перечень затронутых идентификаторов, если он доступен
table = provider_manager.openfile(filepath) table.data_changed.connect(lambda info: print(f'Таблица была изменена {info}'))
- property destroyed: SignalInstance
Сигнал оповещения об удалении объекта.
- property hotlink: str
Наименование атрибута таблицы для хранения гиперссылки.
Значение
Описание
axioma://world.tab
Открывает файл или рабочее пространство в аксиоме
addlayer://world
Добавляет слой world в текущую карту
exec://gimp
Запускает на выполнение программу gimp
Открывает ссылку в браузере
Если префикс отсутствует, то производится попытка запустить по ассоциации.
См.также
axipy.render.VectorLayer.hotlink
.
- insert(features: Union[Feature, Iterable[Feature]])
Вставляет записи в таблицу.
- Параметры:
features – Записи для вставки.
- property is_temporary: bool
Признак того, что таблица является временной. Это в первую очередь касается таблиц, созданных в памяти. А также таблица косметического слоя.
- items(bbox: Union[Rect, QRectF, tuple] = None, ids: List[int] = None) Iterator[Feature]
Запрашивает записи, удовлетворяющие параметрам. В качестве фильтра может быть указан либо ограничивающий прямоугольник, либо перечень идентификаторов в виде списка.
- Параметры:
bbox – Ограничивающий прямоугольник.
ids – Список идентификаторов.
- Результат:
Итератор по записям.
- itemsByIds(ids: List[int]) Iterator[Feature]
Запрашивает записи по списку
list
с идентификаторами записей, либо перечень идентификаторов в виде списка. Идентификаторы несохраненных записей имеют отрицательные значения.- Параметры:
ids – Список идентификаторов.
- Результат:
Итератор по записям.
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: Geometry) Iterator[Feature]
Запрашивает записи с фильтром по геометрическому объекту.
- Параметры:
obj – Геометрия. Если для нее не задана СК, используется СК таблицы.
- Результат:
Итератор по записям.
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: Union[Rect, QRectF, tuple]) Iterator[Feature]
Запрашивает записи с фильтром по ограничивающему прямоугольнику.
- Параметры:
bbox – Ограничивающий прямоугольник.
- Результат:
Итератор по записям.
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(steps: int = 1)
Производит откат вперед на заданное количество шагов. При этом возвращается состояние до последней отмены.
- Параметры:
steps – Количество шагов.
- remove(ids: Union[int, Iterator[int]])
Удаляет записи из таблицы.
- Параметры:
ids – Идентификаторы записей для удаления.
- rollback()
Отменяет несохраненные изменения в таблице.
Если таблица не содержит несохраненные изменения, то команда игнорируется.
- property schema_changed: SignalInstance
Сигнал об изменении схемы таблицы. Испускается когда была изменена структура таблицы.
- property supported_operations: SupportedOperations
Доступные операции.
flags = table.supported_operations assert flags == SupportedOperations.ReadWrite assert flags & SupportedOperations.Insert assert SupportedOperations.Write in flags
- undo(steps: int = 1)
Производит откат вперед на заданное количество шагов. При этом возвращается состояние до последней отмены.
- Параметры:
steps – Количество шагов.
- update(features: Union[Feature, Iterable[Feature]])
Обновляет записи в таблице.
- Параметры:
features – Записи для обновления.
При обновлении проверяется
Feature.id
. Если запись с таким идентификатором не найдена, то она пропускается.modified_feature = Feature({'attr_name': 'new_value'}, id=1) table.update(modified_feature) table.commit()
См.также