DataManager - Каталог данных

class axipy.da.DataManager

Хранилище объектов данных. При открытии таблицы или растра эти объекты автоматически попадают в данный каталог. Для отслеживания изменений в каталоге используются события added и removed.

Если же разработка ведется не в рамках приложения и ядро инициализировано явно посредством axipy.init_axioma(), то объект в каталог надо добавлять явно DataManager.add()

Примечание

Используйте готовый экземпляр этого класса axipy.da.data_manager.

Пример использования.
# Отслеживание добавления или удаления в каталоге.
data_manager.added[str].connect(lambda n: print(f'Таблица "{n}" добавлена в каталог'))
data_manager.removed[str].connect(lambda n: print(f'Таблица "{n}" удалена из каталога'))
# Открываем таблицу
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" удалена из каталога
'''

Methods:

add(data_object)

Добавляет объект данных в хранилище.

exists(obj)

Проверяет присутствует ли объект в каталоге.

find(name)

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

query(query_text[, dialect])

Выполняет SQL-запрос к перечисленным таблицам.

query_hidden(query_text[, dialect])

Выполняет SQL-запрос к таблицам.

remove(data_object)

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

remove_all()

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

Attributes:

added

Signal[str] Сигнал о добавлении объекта.

all_objects

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

count

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

objects

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

removed

Signal[str] Сигнал об удалении объекта.

selection

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

sql_dialect

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

tables

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

updated

Signal[] Сигнал об изменении количества объектов.

add(data_object)

Добавляет объект данных в хранилище.

Параметры

data_object (DataObject) – Объект данных для добавления.

property added

Signal[str] Сигнал о добавлении объекта. В качестве параметра передается наименование таблицы.

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

Signal

property all_objects

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

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

List[DataObject]

property count

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

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

int

exists(obj)

Проверяет присутствует ли объект в каталоге. Проверяет так-же и скрытые объекты, которые отсутствуют в общем списке.

Параметры

obj (DataObject) – проверяемый объект данных.

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

bool

find(name)

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

Параметры

name (str) – Имя объекта данных.

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

Optional[DataObject]

Результат

Искомый объект данных или None.

property objects

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

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

List[DataObject]

query(query_text, dialect=None)

Выполняет SQL-запрос к перечисленным таблицам.

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

  • dialect (Union[TypeSqlDialect, str, None]) – Диалект, который используется при выполнении запроса. Значение по умолчанию установлено как значение свойства sql_dialect.

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

Optional[Table]

Результат

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

Исключение

RuntimeError – При возникновении ошибки.

Пример использования, если работа ведется в рамках Аксиома .
filepath = 'path/to/world.tab'
# Открываем таблицу
table = provider_manager.openfile(filepath)
# Выполняем запрос
qry = data_manager.query('select * from world1 where Страна like "А%"')
# Выполняем тот-же запрос, но с явным указанием диалекта
qry = data_manager.query('select * from world1 where Страна like "А%"', TypeSqlDialect.axioma)
Пример использования, если выполняется как отдельное приложение с инициализацией axipy.init_axioma().
filepath = 'path/to/world.tab'
# Открываем таблицу
table = provider_manager.openfile(filepath)
# Добавляем таблицу в каталог
data_manager.add(table)
# Выполняем запрос
qry = data_manager.query('select * from world1 where Страна like "А%"')
# Выполняем тот-же запрос, но с явным указанием диалекта
qry = data_manager.query('select * from world1 where Страна like "А%"', TypeSqlDialect.axioma)
# Если запрос qry будет использоваться при создании нового запроса, то его по аналогии тоже 
# нужно добавить в каталог
data_manager.add(qry)
# Удаление из каталога
data_manager.remove(qry)
data_manager.remove(table)
query_hidden(query_text, dialect=None)

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

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

  • dialect (Union[TypeSqlDialect, str, None]) – Диалект, который используется при выполнении запроса. Значение по умолчанию установлено как sql_dialect.

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

Optional[Table]

Результат

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

remove(data_object)

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

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

Параметры

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

remove_all()

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

property removed

Signal[str] Сигнал об удалении объекта.

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

Signal

property selection

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

См.также

axipy.gui.selection_manager

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

Optional[SelectionTable]

property sql_dialect

Тип используемого диалекта по умолчанию для выполнения SQL-предложений. Если необходимо переопределить, то для конкретного sql предложения необходимо указывать диалект явно query()

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

TypeSqlDialect

Результат

Тип диалекта. Возможные значения TypeSqlDialect.axioma или TypeSqlDialect.sqlite.

property tables

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

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

List[Table]

property updated

Signal[] Сигнал об изменении количества объектов.

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

Signal