DataManager - Каталог данных
- class axipy.DataManager
Хранилище объектов данных. При открытии таблицы или растра эти объекты автоматически попадают в данный каталог. Для отслеживания изменений в каталоге используются события
addedиremoved.Примечание
Создание
axipy.DataManagerне требуется, используйте объектaxipy.data_manager.Пример использования.# Отслеживание добавления или удаления в каталоге. axipy.data_manager.added[str].connect(lambda n: print(f'Таблица "{n}" добавлена в каталог')) axipy.data_manager.removed[str].connect(lambda n: print(f'Таблица "{n}" удалена из каталога')) # Отслеживание изменения в каталоге. axipy.data_manager.updated.connect(lambda params: print(f"Каталог изменен: {params}")) # Открываем таблицу table = axipy.provider_manager.openfile(filepath) # Список объектов каталога for t in axipy.data_manager: print(t.name) # Доступ по имени "world" in axipy.data_manager try: found_table = axipy.data_manager["world"] except KeyError: pass # Закрываем таблицу table.close() # Убираем отслеживание axipy.data_manager.added[str].disconnect() axipy.data_manager.removed[str].disconnect() axipy.data_manager.updated.disconnect() """ Таблица "world" добавлена в каталог world Таблица "world" удалена из каталога """
Свойства:
Список всех объектов, включая скрытые.
Количество объектов данных.
Список объектов.
Таблица выборки, если она существует.
Тип используемого диалекта по умолчанию для выполнения SQL-предложений.
Список таблиц.
Методы:
add(data_object)Добавляет объект данных в хранилище.
check_query(query_text[, dialect])Производит проверку SQL-запроса на корректность.
exists(obj)Проверяет, присутствует ли объект в каталоге.
find(name)Производит поиск объект данных по имени.
query(query_text[, dialect])Выполняет SQL-запрос к перечисленным таблицам.
query_hidden(query_text[, dialect])Выполняет SQL-запрос к таблицам.
remove(data_object[, wait])Удаляет объект данных.
remove_all([wait])Удаляет все объекты данных.
Сигналы:
Сигнал о добавлении объекта.
Сигнал об удалении объекта.
Сигнал об изменении данных таблиц, присутствующих в каталоге.
Сигнал об изменении каталога.
Специальные методы:
__contains__(name)Проверяет наличие элемента в объекте (оператор
in).__getitem__(key)Доступ к элементу по индексу (
obj[i]).__iter__()Возвращает итератор по объекту (функция
iter()).__len__()Длина объекта (функция
len()).- __getitem__(key: str) DataObject
Доступ к элементу по индексу (
obj[i]).
- __iter__() Iterator[DataObject]
Возвращает итератор по объекту (функция
iter()).
- add(data_object: DataObject)
Добавляет объект данных в хранилище.
- Параметры:
data_object – Объект данных для добавления.
- property added: Signal
Сигнал о добавлении объекта. В качестве параметра передается наименование таблицы.
- Тип результата:
Signal[str]
- property all_objects: List[DataObject]
Список всех объектов, включая скрытые.
- check_query(query_text: str, dialect: TypeSqlDialect = TypeSqlDialect.sqlite) Tuple[bool, str]
Производит проверку SQL-запроса на корректность.
- Параметры:
query_text – Текст запроса.
dialect – Диалект, который используется при выполнении запроса. Значение по умолчанию установлено как значение свойства
sql_dialect.
- Результат:
Пара значений [Успешность проверки, Сообщение].
Пример использования, если работа ведется в рамках Аксиома .filepath = "path/to/world.tab" # Открываем таблицу table = axipy.provider_manager.openfile(filepath) table.name = "world1" # Проверка текста запроса success, message = axipy.data_manager.check_query(f"select * from world1") print(f"Check result: {success}; {message}") """ Check result: True; Запрос составлен верно """
- exists(obj: DataObject) bool
Проверяет, присутствует ли объект в каталоге. Проверяет так-же и скрытые объекты, которые отсутствуют в общем списке.
- Параметры:
obj – проверяемый объект данных.
- find(name: str) Optional[DataObject]
Производит поиск объект данных по имени.
- Параметры:
name – Имя объекта данных.
- Результат:
Искомый объект данных или None.
- property objects: List[DataObject]
Список объектов.
- query(query_text: str, dialect: TypeSqlDialect = TypeSqlDialect.sqlite) Optional[Table]
Выполняет SQL-запрос к перечисленным таблицам.
- Параметры:
query_text – Текст запроса.
dialect – Диалект, который используется при выполнении запроса. Значение по умолчанию установлено как значение свойства
sql_dialect.
- Результат:
Таблица, если результатом запроса является таблица.
- Исключение:
RuntimeError – При возникновении ошибки.
Пример использования, если работа ведется в рамках Аксиома .filepath = "path/to/world.tab" # Открываем таблицу table = axipy.provider_manager.openfile(filepath) table.name = "world1" # Выполняем запрос qry = axipy.data_manager.query('select * from world1 where Страна like "А%"') # Выполняем тот-же запрос, но с явным указанием диалекта qry = axipy.data_manager.query('select * from world1 where Страна like "А%"', axipy.TypeSqlDialect.axioma)
Выполняет SQL-запрос к таблицам. В отличие от
query()результирующий объектTableдобавляется в каталог как скрытый объект. Он не учитывается в общем списке и от него из этого каталога не приходят события.- Параметры:
query_text – Текст запроса.
dialect – Диалект, который используется при выполнении запроса. Значение по умолчанию установлено как
sql_dialect.
- Результат:
Таблица, если результатом запроса является таблица.
- remove(data_object: DataObject, wait: bool = True)
Удаляет объект данных.
Объект данных при этом закрывается.
- Параметры:
data_object – Объект данных для удаления.
wait – Будет ли метод ждать полного закрытия объекта данных. Подробнее в описании метода
axipy.DataObject.close().
- remove_all(wait: bool = True)
Удаляет все объекты данных.
- Параметры:
wait – Будет ли метод ждать полного закрытия объектов данных. Подробнее в описании метода
axipy.DataObject.close().
- property selection: Optional[SelectionTable]
Таблица выборки, если она существует.
См.также
- property sql_dialect: TypeSqlDialect
Тип используемого диалекта по умолчанию для выполнения SQL-предложений. Если необходимо переопределить, то для конкретного sql предложения необходимо указывать диалект явно
query().- Результат:
Тип диалекта. Возможные значения TypeSqlDialect.axioma или TypeSqlDialect.sqlite.
- property table_data_changed: Signal
Сигнал об изменении данных таблиц, присутствующих в каталоге. Испускается когда были изменены данные таблицы. В качестве параметров передаются имя изменяемой таблицы и дополнительная информация в виде dict (подробнее
Table.data_changed) .Пример подписки на изменение таблиц.# Подписываемся на все присутствующие в менеджере таблицы func = lambda name, info: print(f'Таблица {name} была изменена {info}') data_manager.table_data_changed.connect(func) # Отписаться от сигнала, если он больше не нужен data_manager.table_data_changed.disconnect(func)
- property updated: Signal
Сигнал об изменении каталога. В качестве параметра передается дополнительная информация в виде dict.
Доступные параметры Наименование
Значение
Описание
operation
added
Таблица добавлена в каталог
operation
removed
Таблица удалена из каталога
operation
nameChanged
Изменено наименование таблицы
operation
selectionChanged
Произведены изменения в выборке
name
Наименование таблицы, если оно доступно