DataManager - Каталог данных
- class axipy.DataManager
Хранилище объектов данных. При открытии таблицы или растра эти объекты автоматически попадают в данный каталог. Для отслеживания изменений в каталоге используются события
added
иremoved
.Примечание
Создание
axipy.DataManager
не требуется, используйте объектaxipy.data_manager
.# Отслеживание добавления или удаления в каталоге. data_manager.added[str].connect(lambda n: print(f'Таблица "{n}" добавлена в каталог')) data_manager.removed[str].connect(lambda n: print(f'Таблица "{n}" удалена из каталога')) # Отслеживание изменения в каталоге. data_manager.updated.connect(lambda params: print(f"Каталог изменен: {params}")) # Открываем таблицу table = provider_manager.openfile(filepath) # Список объектов каталога for t in data_manager: print(t.name) # Доступ по имени 'world' in data_manager try: found_table = data_manager['world'] except KeyError: pass # Закрываем таблицу table.close() # Убираем отслеживание data_manager.added[str].disconnect() data_manager.removed[str].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)Удаляет объект данных.
Удаляет все объекты данных.
Сигналы:
Сигнал о добавлении объекта.
Сигнал об удалении объекта.
Сигнал об изменении данных таблиц, присутствующих в каталоге.
Сигнал об изменении каталога.
- 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 = provider_manager.openfile(filepath) table.name = 'world1' # Проверка текста запроса succ, mess = data_manager.check_query(f"select * from world1") print(f'Check result: {succ}; {mess}') ''' 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 = provider_manager.openfile(filepath) table.name = 'world1' # Выполняем запрос qry = data_manager.query('select * from world1 where Страна like "А%"') # Выполняем тот-же запрос, но с явным указанием диалекта qry = data_manager.query('select * from world1 where Страна like "А%"', TypeSqlDialect.axioma)
Выполняет SQL-запрос к таблицам. В отличие от
query()
результирующий объектTable
добавляется в каталог как скрытый объект. Он не учитывается в общем списке и от него из этого каталога не приходят события.- Параметры:
query_text – Текст запроса.
dialect – Диалект, который используется при выполнении запроса. Значение по умолчанию установлено как
sql_dialect
.
- Результат:
Таблица, если результатом запроса является таблица.
- remove(data_object: DataObject)
Удаляет объект данных.
Объект данных при этом закрывается.
- Параметры:
data_object – Объект данных для удаления.
- remove_all()
Удаляет все объекты данных.
- 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
Наименование таблицы, если оно доступно