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" удалена из каталога
'''

Свойства:

all_objects

Список всех объектов, включая скрытые.

count

Количество объектов данных.

objects

Список объектов.

selection

Таблица выборки, если она существует.

sql_dialect

Тип используемого диалекта по умолчанию для выполнения SQL-предложений.

tables

Список таблиц.

Методы:

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)

Удаляет объект данных.

remove_all()

Удаляет все объекты данных.

Сигналы:

added

Сигнал о добавлении объекта.

removed

Сигнал об удалении объекта.

table_data_changed

Сигнал об изменении данных таблиц, присутствующих в каталоге.

updated

Сигнал об изменении каталога.

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; Запрос составлен верно
'''
property count: int

Количество объектов данных.

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)
query_hidden(query_text: str, dialect: TypeSqlDialect = TypeSqlDialect.sqlite) Optional[Table]

Выполняет SQL-запрос к таблицам. В отличие от query() результирующий объект Table добавляется в каталог как скрытый объект. Он не учитывается в общем списке и от него из этого каталога не приходят события.

Параметры:
  • query_text – Текст запроса.

  • dialect – Диалект, который используется при выполнении запроса. Значение по умолчанию установлено как sql_dialect.

Результат:

Таблица, если результатом запроса является таблица.

remove(data_object: DataObject)

Удаляет объект данных.

Объект данных при этом закрывается.

Параметры:

data_object – Объект данных для удаления.

remove_all()

Удаляет все объекты данных.

property removed: Signal

Сигнал об удалении объекта.

Тип результата:

Signal[str]

property selection: Optional[SelectionTable]

Таблица выборки, если она существует.

См.также

axipy.selection_manager

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 tables: List[Table]

Список таблиц.

property updated: Signal

Сигнал об изменении каталога. В качестве параметра передается дополнительная информация в виде dict.

Доступные параметры

Наименование

Значение

Описание

operation

added

Таблица добавлена в каталог

operation

removed

Таблица удалена из каталога

operation

nameChanged

Изменено наименование таблицы

operation

selectionChanged

Произведены изменения в выборке

name

Наименование таблицы, если оно доступно

Тип результата:

Signal[Dict[str, str]]