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

class axipy.da.ProviderManager

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

Примечание

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

Примечание

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

Примечание

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

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

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

Methods:

create(definition)

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

create_open(definition)

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

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

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

loaded_providers()

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

open(definition)

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

open_hidden(definition)

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

openfile(filepath, *args, **kwargs)

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

providers()

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

query(query_text, *tables)

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

read_contents(definition)

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

Attributes:

csv

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

excel

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

gdal

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

mif

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

mssql

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

ogr

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

oracle

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

postgre

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

rest

Провайдер REST.

shp

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

sqlite

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

svg

Провайдер для SVG.

tab

Провайдер MapInfo.

tms

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

wms

Web Map Service.

wmts

Web Map Tile Service.

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)

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

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

Доступные провайдеры данных и ссылки на дополнительные параметры:

Провайдер

Краткое описание

Ссылка

tab

Провайдер MapInfo

axipy.da.TabDataProvider.open()

csv

Текст с разделителями

axipy.da.CsvDataProvider.open()

ogr

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

axipy.da.OgrDataProvider.open()

excel

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

axipy.da.ExcelDataProvider.open()

shp

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

axipy.da.ShapeDataProvider.open()

sqlite

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

axipy.da.SqliteDataProvider.open()

svg

Провайдер для SVG

axipy.da.SvgDataProvider.open()

gdal

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

axipy.da.GdalDataProvider.open()

postgre

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

axipy.da.PostgreDataProvider.open()

oracle

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

axipy.da.OracleDataProvider.open()

mssql

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

axipy.da.MsSqlDataProvider.open()

rest

Провайдер REST

axipy.da.RestDataProvider.open()

tms

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

axipy.da.TmsDataProvider.open()

wms

Web Map Service

axipy.da.WmsDataProvider.open()

wmts

Web Map Tile Service

axipy.da.WmtsDataProvider.open()

Также существуют параметры, которые допустимы независимо от типа провайдера

Доступные провайдеры данных и ссылки на дополнительные параметры:

Параметр

Краткое описание

provider

Используемый провайдер. Допустимые значения можно получить loaded_providers().
Если не задан, то система пытается его определить самостоятельно.

src

Ссылка на источник. Как правило, это имя файла.
Для конкретного провайдера может дублироваться под другим именем.

dataobject

Если источник содержит несколько таблиц, то имя конкретного указывается через данный параметр

alias

Псевдоним для открываемого источника данных.
В системе открытыйобъект будет доступен по этому имени
Параметры

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

Пример открытия файла (аналогичен openfile()):

json = {'src':'../path/to/datadir/world.tab'}
table_world = provider_manager.open(json)

или, что тоже самое:

json = {'filepath':'../path/to/datadir/world.tab'}
table_world = provider_manager.open(json)

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

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

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

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

DataObject

open_hidden(definition)

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

Примечание

См. также open()

Параметры

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

Пример:

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

DataObject

openfile(filepath, *args, **kwargs)

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

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

  • **kwargs – Именованные аргументы. Возможные варианты от провайдера. Подробнее см. open()

Пример:

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

DataObject

property oracle

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

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

OracleDataProvider

property postgre

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

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

PostgreDataProvider

providers()

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

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

List[DataProvider]

Результат

Список провайдеров.

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]

Результат

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

Пример:

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

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

Провайдер REST.

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

RestDataProvider

property shp

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

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

ShapeDataProvider

property sqlite

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

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

SqliteDataProvider

property svg

Провайдер для SVG.

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

SvgDataProvider

property tab

Провайдер MapInfo.

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

TabDataProvider

property tms

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

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

TmsDataProvider

property wms

Web Map Service.

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

WmsDataProvider

property wmts

Web Map Tile Service.

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

WmtsDataProvider