ProviderManager - Объект открытия/создания данных

class axipy.da.ProviderManager

Класс открытия/создания объектов данных.

Примечание

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

Примечание

Для удобного задания параметров используйте экземпляры провайдеров: tab, shp, csv, mif, excel, sqlite, postgre, oracle, mssql.

Примечание

Открытые данные автоматически попадают в хранилище данных axipy.da.DataManager.

Пример открытия локальной таблицы:

table = provider_manager.openfile('../path/to/datadir/table.tab')
create(definition)

Создает и открывает данные из описания.

Параметры

definition (dict) – Описание объекта данных.

Псевдоним create_open().

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

DataObject

create_open(definition)

Создает и открывает данные из описания.

Возможные параметры:
  • src - Строка, определяющая местоположение источника данных. Это может быть либо путь к файлу с расширением TAB, либо пустая строка (для таблицы, размещаемой в памяти).

  • schema - Схема таблицы. Задается массивом объектов, содержащих атрибуты.

  • hidden - Если указано True, то созданный объект не будет зарегистрирован в каталоге. См. также open_hidden()

Параметры

definition (dict) – Описание объекта данных.

Пример:

definition = {
    'src': '../path/to/datadir/edit/table.tab',
    'schema': attr.schema(
        attr.string('field1'),
        attr.integer('field2'),
    ),
}
table = provider_manager.create(definition)
Тип результата

DataObject

createfile(filepath, schema, *args, **kwargs)

Создает таблицу.

create() выполняет ту же функцию, но в более обобщенном виде.

Параметры
  • filepath (str) – Путь к создаваемой таблице.

  • schema – Схема таблицы.

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

DataObject

property csv

Файловый провайдер - Текст с разделителями.

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

CsvDataProvider

property excel

Провайдер чтения файлов Excel.

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

ExcelDataProvider

property gdal

Растровый провайдер GDAL.

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

GdalDataProvider

loaded_providers()

Возвращает список всех загруженных провайдеров данных.

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

dict

Результат

Провайдеры в виде пар (Идентификатор : Описание).

property mif

Провайдер данных MIF-MID.

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

MifMidDataProvider

property mssql

Провайдер для базы данных MSSQLServer.

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

MsSqlDataProvider

property ogr

Векторный провайдер OGR.

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

OgrDataProvider

open(definition)

Открывает данные по описанию.

Формат описания объектов данных индивидуален для каждого провайдера данных, однако многие элементы используются для всех провайдеров данных.

Параметры

definition (dict) – Описание объекта данных.

Пример:

# Пример открытия GPKG файла::
definition = { 'src': '../path/to/datadir/example.gpkg',
               'dataobject': 'tablename',
               'provider': 'SqliteDataProvider' }
table = provider_manager.open(definition)

Пример открытия таблицы базы данных:

definition = {"src": "localhost",
              "db": "sample",
              "user": "postgres",
              "password": "postgres",
              "dataobject": "public.world",
              "provider": "PgDataProvider"}
table = provider_manager.open(definition)
Тип результата

DataObject

open_hidden(definition)

Открывает данные по описанию. Аналогична функции open() за исключением того, что когда данный объект добавляется в каталог, он не учитывается в общем списке и от него из этого каталога не приходят события.

Параметры

definition (dict) – Описание объекта данных.

Пример:

table = provider_manager.open_hidden({'src':'world.tab'})
print(len(data_manager), data_manager.exists(table))
data_manager.remove(table)
>>> 0 True
Тип результата

DataObject

openfile(filepath, *args, **kwargs)

Открывает данные из файла.

Параметры
  • filepath (str) – Путь к открываемому файлу.

  • **kwargs – Именованные аргументы.

Пример:

table = provider_manager.openfile('../path/to/datadir/example.gpkg')
Тип результата

DataObject

property oracle

Провайдер для базы данных Oracle.

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

OracleDataProvider

property postgre

Провайдер для базы данных PostgreSQL.

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

PostgreDataProvider

query(query_text, *tables)

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

Предупреждение

Используйте axipy.da.DataManager.query().

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

  • *tables – Список таблиц, к которым выполняется запрос.

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

Table

Результат

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

Пример:

query_text = "SELECT * FROM world, caps WHERE world.capital = caps.capital"
joined = provider_manager.query(query_text, world, caps)
read_contents(definition)

Читает содержимое источника данных.

Обычно используется для источников, способных содержать несколько объектов данных.

Параметры

definition (Union[dict, str]) – Описание источника данных.

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

List[str]

Результат

Имена объектов данных.

Пример:

>>> provider_manager.read_contents('../path/to/datadir/example.gpkg')
['world', 'worldcap']

>>> world = provider_manager.openfile('../path/to/datadir/example.gpkg',
...         dataobject='world')
property rest

Провайдер REST.

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

RestDataProvider

property shp

Векторный провайдер OGR.

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

ShapeDataProvider

property sqlite

Векторный провайдер sqlite.

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

SqliteDataProvider

property tab

Провайдер MapInfo.

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

TabDataProvider

property tms

Тайловый провайдер.

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

TmsDataProvider

property wmts

Web Map Tile Service.

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

WmtsDataProvider

class axipy.da.Source(*args)

Источник данных.

Используется для открытия данных или для указания источника при конвертации.

Пример открытия:

table = source.open()

Пример конвертации:

destination.export_from(source)

Примечание

Не все провайдеры поддерживают открытие и конвертацию. См. описание конкретного провайдера данных.

open()

Открывает источник данных.

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

DataObject

class axipy.da.Destination(schema, *args)

Назначение объекта данных.

Используется для создания данных или для указания назначения при конвертации.

Пример создания:

table = destination.create_open()

Пример конвертации:

destination.export_from(source)

Примечание

Не все провайдеры поддерживают создание и конвертацию. См. описание конкретного провайдера данных.

create_open()

Создает и открывает объект данных.

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

DataObject

export(features)

Создает объект данных и экспортирует в него записи.

Параметры

features (Iterator[Feature]) – Записи.

export_from(source, copy_schema=False)

Создает объект данных и экспортирует в него записи из источника данных.

Параметры
  • source (Source) – Источник данных.

  • copy_schema (bool) – Копировать схему источника без изменений.

export_from_table(table, copy_schema=False)

Создает объект данных и экспортирует в него записи из таблицы.

Параметры
  • table (Table) – Таблица.

  • copy_schema (bool) – Копировать схему источника без изменений.

class axipy.da.DataProvider(info)

Абстрактный провайдер данных.

create(*args, **kwargs)

Создает и открывает источник данных.

Псевдоним create_open().

create_open(*args, **kwargs)

Создает и открывает источник данных.

Пример:

provider.create_open(...)

Что эквивалентно:

provider.get_destiantion(...).create_open()

См.также

DataProvider.destination().

file_extensions()

Список поддерживаемых расширений файлов.

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

List[str]

Результат

Пустой список для не файловых провайдеров.

get_destination()

Создает назначение объекта данных.

Исключение

NoteImplementedError – Если провайдер не поддерживает создание назначений.

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

Destination

get_source()

Создает источник данных.

Исключение

NoteImplementedError – Если провайдер не поддерживает создание источников.

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

Source

property id

Идентификатор провайдера.

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

str

open(*args, **kwargs)

Открывает источник данных.

Пример:

provider.open(...)

Что эквивалентно:

provider.get_source(...).open()

См.также

DataProvider.source().

class axipy.da.CsvDataProvider(info)

Базовые классы: axipy.da.DataProvider

Файловый провайдер: Текст с разделителями.

get_destination(filepath, schema, with_header=True, delimiter=',', encoding='utf8')

Создает назначение объекта данных.

Параметры
  • filepath (str) – Путь к файлу.

  • schema (Schema) – Схема таблицы.

  • with_header (bool) – Признак того, что в первой строке содержатся имена атрибутов таблицы.

  • delimiter (str) – Разделитель полей.

  • encoding (str) – Кодировка.

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

Destination

get_source(filepath, with_header=True, delimiter=',', encoding='utf8')

Создает источник данных.

Параметры
  • filepath (str) – Путь к файлу.

  • with_header (bool) – Признак того, что в первой строке содержатся имена атрибутов таблицы.

  • delimiter (str) – Разделитель полей.

  • encoding (str) – Кодировка.

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

Source

class axipy.da.ExcelDataProvider(info)

Базовые классы: axipy.da.DataProvider

Провайдер чтения файлов Excel.

get_destination()

Внимание

Не поддерживается.

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

Destination

get_source(filepath, page, with_header=False, encoding='utf8')

Создает источник данных.

Параметры
  • filepath (str) – Путь к файлу.

  • page (str) – Имя страницы.

  • with_header (bool) – Признак того, что в первой строке содержатся имена атрибутов таблицы.

  • encoding (str) – Кодировка.

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

Source

class axipy.da.MifMidDataProvider(info)

Базовые классы: axipy.da.DataProvider

Провайдер данных MIF-MID.

convert_to_tab(mif_filepath, tab_filepath)

Конвертирует из MIF в TAB.

Параметры
  • mif_filepath (str) – Путь к исходному файлу.

  • tab_filepath (str) – Путь к выходному файлу.

get_destination(filepath, schema)

Создает назначение объекта данных.

Параметры
  • filepath (str) – Путь к файлу.

  • schema (Schema) – Схема таблицы.

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

Destination

get_source()

Внимание

Не поддерживается.

Поддерживает экспорт только в TAB. См. convert_to_tab().

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

Source

class axipy.da.ShapeDataProvider(info)

Базовые классы: axipy.da.DataProvider

file_extensions()

Список поддерживаемых расширений файлов.

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

List[str]

Результат

Пустой список для не файловых провайдеров.

get_destination(filepath, schema, encoding='utf8')

Создает назначение объекта данных.

Параметры
  • filepath (str) – Путь к файлу.

  • schema (Schema) – Схема таблицы.

  • encoding (str) – Кодировка.

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

Destination

get_source(filepath, encoding='utf8')

Создает источник данных.

Параметры
  • filepath (str) – Путь к файлу.

  • encoding (str) – Кодировка.

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

Source

open_temporary(schema)

Создает временную таблицу.

Параметры

schema (Schema) – Схема таблицы.

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

Table

class axipy.da.SqliteDataProvider(info)

Базовые классы: axipy.da.DataProvider

Векторный провайдер sqlite.

get_destination()

Внимание

Не поддерживается.

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

Destination

get_source(filepath, dataobject=None, sql=None)

Создает источник данных. В качестве объекта может быть указана либо таблица, либо текст запроса. Если указан sql, то он имеет более высокий приоритет по отношению к значению dataobject. Если оба параметра опущены, будет возвращен None.

Параметры
  • filepath (str) – Путь к файлу.

  • dataobject (Optional[str]) – Имя таблицы.

  • sql (Optional[str]) – SQL-запрос.

Пример с таблицей:

table = provider_manager.openfile('world.sqlite', dataobject='world')

Пример с запросом:

table = provider_manager.openfile('world.sqlite', sql="select * from world where Страна like 'Р%'")
Тип результата

Source

class axipy.da.TabDataProvider(info)

Базовые классы: axipy.da.DataProvider

Провайдер MapInfo.

get_destination(filepath, schema)

Создает назначение объекта данных.

Параметры
  • filepath (str) – Путь к файлу.

  • schema (Schema) – Схема таблицы.

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

Destination

get_source(filepath)

Создает источник данных.

Параметры

filepath (str) – Путь к файлу.

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

Source

class axipy.da.PostgreDataProvider(info)

Базовые классы: axipy.da.DataProvider

Провайдер для Базы Данных PostgreSQL.

get_destination(schema, dataobject, db_name, host, user, password, port=5432)

Создает назначение объекта данных.

Параметры
  • schema (Schema) – Схема таблицы.

  • dataobject (str) – Имя таблицы.

  • db_name (str) – Имя базы данных.

  • host (str) – Адрес сервера.

  • user (str) – Имя пользователя.

  • password (str) – Пароль.

  • port (int) – Порт.

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

Destination

get_source(host, db_name, user, password, port=5432, dataobject=None, sql=None)

Создает описательную структуру для источника данных. Она в дальнейшем может быть использована при открытии данных ProviderManager.open().

Примечание

В качестве таблицы можно указать либо ее наименование dataobject либо текст запроса sql.

Примечание

Ссылку на провайдер можно получить через глобальную переменную axipy.provider_manager.postgre.

Параметры
  • host (str) – Адрес сервера.

  • db_name (str) – Имя базы данных.

  • user (str) – Имя пользователя.

  • password (str) – Пароль.

  • port (int) – Порт.

  • dataobject (Optional[str]) – Имя таблицы.

  • sql (Optional[str]) – SQL-запрос. Если указан, то он имеет более высокий приоритет по отношению к значению dataobject.

Пример с указанием имени таблицы:

definition = provider_manager.postgre.get_source('localhost', 'test', 'postgres', 'postgres', dataobject='world')
table = provider_manager.open(definition)

Пример с указанием текста запроса:

definition = provider_manager.postgre.get_source('localhost', 'test', 'postgres', 'postgres', sql="select * from world where Страна like 'Р%'")
table = provider_manager.open(definition)
Тип результата

Source

class axipy.da.OracleDataProvider(info)

Базовые классы: axipy.da.DataProvider

Провайдер для Базы Данных Oracle.

Внимание

Для подключения к БД Oracle необходимо настроить Oracle Instant Client. См. Руководство по установке и активации.

get_destination(schema, dataobject, db_name, host, user, password, port=1521)

Создает назначение объекта данных.

Параметры
  • schema (Schema) – Схема таблицы.

  • dataobject (str) – Имя таблицы.

  • db_name (str) – Имя базы данных.

  • host (str) – Адрес сервера.

  • user (str) – Имя пользователя.

  • password (str) – Пароль.

  • port (int) – Порт.

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

Destination

get_source(host, db_name, user, password, port=1521, dataobject=None, sql=None)

Создает описательную структуру для источника данных. Она в дальнейшем может быть использована при открытии данных ProviderManager.open().

Примечание

В качестве таблицы можно указать либо ее наименование dataobject либо текст запроса sql.

Примечание

Ссылку на провайдер можно получить через глобальную переменную axipy.provider_manager.oracle.

Параметры
  • host (str) – Адрес сервера.

  • db_name (str) – Имя базы данных.

  • user (str) – Имя пользователя.

  • password (str) – Пароль.

  • port (int) – Порт.

  • dataobject (Optional[str]) – Имя таблицы.

  • sql (Optional[str]) – SQL-запрос. Если указан, то он имеет более высокий приоритет по отношению к значению dataobject.

Пример с указанием имени таблицы:

definition = provider_manager.oracle.get_source('localhost', 'test', 'oracle', 'oracle', dataobject='world')
table = provider_manager.open(definition)

Пример с указанием текста запроса:

definition = provider_manager.oracle.get_source('localhost', 'test', 'oracle', 'oracle', sql="select * from world where Страна like 'Р%'")
table = provider_manager.open(definition)
Тип результата

Source

class axipy.da.MsSqlDataProvider(info)

Базовые классы: axipy.da.DataProvider

Провайдер для Базы Данных MSSQLServer.

Внимание

Для работы с СУБД Microsoft SQL Server необходимо скачать и установить Microsoft SQL Server Native Client.

get_source(host, db_name, user, password, port=1433, dataobject=None, sql=None)

Создает описательную структуру для источника данных. Она в дальнейшем может быть использована при открытии данных ProviderManager.open().

Примечание

В качестве таблицы можно указать либо ее наименование dataobject либо текст запроса sql.

Примечание

Ссылку на провайдер можно получить через глобальную переменную axipy.provider_manager.mssql.

Параметры
  • host (str) – Адрес сервера.

  • db_name (str) – Имя базы данных.

  • user (str) – Имя пользователя.

  • password (str) – Пароль.

  • port (int) – Порт.

  • dataobject (Optional[str]) – Имя таблицы.

  • sql (Optional[str]) – SQL-запрос. Если указан, то он имеет более высокий приоритет по отношению к значению dataobject.

Пример с указанием имени таблицы:

definition = provider_manager.mssql.get_source('localhost', 'test', 'sa', 'sa', dataobject='world')
table = provider_manager.open(definition)

Пример с указанием текста запроса:

definition = provider_manager.mssql.get_source('localhost', 'test', 'sa', 'sa', sql="select * from world where Страна like 'Р%'")
table = provider_manager.open(definition)
Тип результата

Source