QueryTable - Таблица SQL запроса
================================================

.. currentmodule:: axioma.core.sql

.. class:: QueryTable()

	Таблица SQL запроса. Доступно чтение, изменение и удаление объектов из Запроса.

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

	* :class:`~axioma.core.dp.TransactionalTable`

	Методы:

		.. method:: features()

			Получить список записей таблицы

			:rtype: :class:`list` [:class:`~axioma.core.dp.Feature`]

		.. method:: hasId(id)

			Проверить, содержит ли таблица запись с указанным идентификатором

			:param id: идентификатор записи
			:type id: :class:`~PyQt5.QtCore.QVariant`
			:return: True если содержит
			:rtype: :class:`bool`

		.. method:: mainTable()

			Получить главную таблицу

			:rtype: :class:`~axioma.core.dp.Table`

		.. method:: query()

			Получить запрос, на основе которого построена таблица

			:rtype: :class:`~axioma.core.sql.DialectQuery`

		.. method:: update(cursor, description=str())

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

			:param cursor: итератор по записям
			:type cursor: :class:`~axioma.core.dp.Cursor`
			:param description: описание операции
			:type description: :class:`str`

		.. method:: update(feature_list, description=str())

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

			:param feature_list: список записей
			:type feature_list: :class:`list` [:class:`~axioma.core.dp.Feature`]
			:param description: описание операции
			:type description: :class:`str`
			
			.. code-block:: python
			
				import axioma.app

				# Функция изменения значения ячейки в колонке "Страна" на значение "Новое"
				def modify(feature):
					feature.setAttribute('Страна', 'Новое')
					feature.setModified('Страна', True)
					return feature
				
				# Пусть открыта таблица, в которой есть колонка "Страна",
				# И создан sql-запрос "Запрос" к этой таблице, в который вошла эта колонка.

				# Получаем каталог открытых данных
				catalog = axioma.app.mainWindow.dataCatalog()
				# Находим sql-запрос с названием "Запрос"
				for table in catalog.allDataObjects():
					if table.name() == 'Запрос':
						# Получаем первую и третью ячейки в колонке "Страна"
						someFeatures = table.selectFeaturesById([0, 2], ['Страна'])
						# Получем ячейки с теми же индексами, но измененными значениями
						modifiedFeatures = list(map(modify, someFeatures))
						# Обновляем записи в соответствующих ячейках
						table.update(modifiedFeatures)
				
				# Теперь в sql-запросе "Запрос" значения в первой и третьей ячейках в колонке
				# "Страна" изменены на значение "Новое". 