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().- Тип результата
-
create_open(definition)¶ Создает и открывает данные из описания.
- Возможные параметры:
src- Строка, определяющая местоположение источника данных. Это может быть либо путь к файлу с расширением TAB, либо пустая строка (для таблицы, размещаемой в памяти).schema- Схема таблицы. Задается массивом объектов, содержащих атрибуты.
- Параметры
definition (
dict) – Описание объекта данных.
Пример:
definition = { 'src': '../path/to/datadir/edit/table.tab', 'schema': attr.schema( attr.string('field1'), attr.integer('field2'), ), } table = provider_manager.create(definition)
- Тип результата
-
createfile(filepath, schema, *args, **kwargs)¶ Создает таблицу.
create()выполняет ту же функцию, но в более обобщенном виде.- Параметры
filepath (
str) – Путь к создаваемой таблице.schema – Схема таблицы.
- Тип результата
-
property
csv¶ Файловый провайдер - Текст с разделителями.
- Тип результата
-
property
excel¶ Провайдер чтения файлов Excel.
- Тип результата
-
property
gdal¶ Растровый провайдер GDAL.
- Тип результата
GdalDataProvider
-
loaded_providers()¶ Возвращает список всех загруженных провайдеров данных.
- Тип результата
- Результат
Провайдеры в виде пар
(Идентификатор : Описание).
-
property
mif¶ Провайдер данных MIF-MID.
- Тип результата
-
property
mssql¶ Провайдер для базы данных MSSQLServer.
- Тип результата
-
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)
- Тип результата
-
openfile(filepath, *args, **kwargs)¶ Открывает данные из файла.
- Параметры
filepath (
str) – Путь к открываемому файлу.**kwargs – Именованные аргументы.
Пример:
table = provider_manager.openfile('../path/to/datadir/example.gpkg')
- Тип результата
-
property
oracle¶ Провайдер для базы данных Oracle.
- Тип результата
-
property
postgre¶ Провайдер для базы данных PostgreSQL.
- Тип результата
-
query(query_text, *tables)¶ Выполняет SQL-запрос к перечисленным таблицам.
Предупреждение
Используйте
axipy.da.DataManager.query().- Параметры
query_text (
str) – Текст запроса.*tables – Список таблиц, к которым выполняется запрос.
- Тип результата
- Результат
Таблица, если результатом запроса является таблица.
Пример:
query_text = "SELECT * FROM world, caps WHERE world.capital = caps.capital" joined = provider_manager.query(query_text, world, caps)
-
read_contents(definition)¶ Читает содержимое источника данных.
Обычно используется для источников, способных содержать несколько объектов данных.
- Параметры
- Тип результата
- Результат
Имена объектов данных.
Пример:
>>> 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.
- Тип результата
-
property
sqlite¶ Векторный провайдер sqlite.
- Тип результата
-
property
tab¶ Провайдер MapInfo.
- Тип результата
-
property
tms¶ Тайловый провайдер.
- Тип результата
TmsDataProvider
-
property
wmts¶ Web Map Tile Service.
- Тип результата
WmtsDataProvider
-
-
class
axipy.da.Source(*args)¶ Источник данных.
Используется для открытия данных или для указания источника при конвертации.
Пример открытия:
table = source.open()
Пример конвертации:
destination.export_from(source)
Примечание
Не все провайдеры поддерживают открытие и конвертацию. См. описание конкретного провайдера данных.
-
open()¶ Открывает источник данных.
- Тип результата
-
-
class
axipy.da.Destination(schema, *args)¶ Назначение объекта данных.
Используется для создания данных или для указания назначения при конвертации.
Пример создания:
table = destination.create_open()
Пример конвертации:
destination.export_from(source)
Примечание
Не все провайдеры поддерживают создание и конвертацию. См. описание конкретного провайдера данных.
-
create_open()¶ Создает и открывает объект данных.
- Тип результата
-
export(features)¶ Создает объект данных и экспортирует в него записи.
-
export_from(source, copy_schema=False)¶ Создает объект данных и экспортирует в него записи из источника данных.
-
-
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()¶ Список поддерживаемых расширений файлов.
-
get_destination()¶ Создает назначение объекта данных.
- Исключение
NoteImplementedError – Если провайдер не поддерживает создание назначений.
- Тип результата
-
get_source()¶ Создает источник данных.
- Исключение
NoteImplementedError – Если провайдер не поддерживает создание источников.
- Тип результата
-
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')¶ Создает назначение объекта данных.
-
get_source(filepath, with_header=True, delimiter=',', encoding='utf8')¶ Создает источник данных.
-
-
class
axipy.da.ExcelDataProvider(info)¶ Базовые классы:
axipy.da.DataProviderПровайдер чтения файлов Excel.
-
get_destination()¶ Внимание
Не поддерживается.
- Тип результата
-
-
class
axipy.da.MifMidDataProvider(info)¶ Базовые классы:
axipy.da.DataProviderПровайдер данных MIF-MID.
-
convert_to_tab(mif_filepath, tab_filepath)¶ Конвертирует из MIF в TAB.
-
get_destination(filepath, schema)¶ Создает назначение объекта данных.
- Параметры
- Тип результата
-
-
class
axipy.da.ShapeDataProvider(info)¶ Базовые классы:
axipy.da.DataProvider-
get_destination(filepath, schema, encoding='utf8')¶ Создает назначение объекта данных.
- Параметры
- Тип результата
-
get_source(filepath, encoding='utf8')¶ Создает источник данных.
-
-
class
axipy.da.SqliteDataProvider(info)¶ Базовые классы:
axipy.da.DataProviderВекторный провайдер sqlite.
-
get_destination()¶ Внимание
Не поддерживается.
- Тип результата
-
get_source(filepath, dataobject=None, sql=None)¶ Создает источник данных. В качестве объекта может быть указана либо таблица, либо текст запроса. Если указан sql, то он имеет более высокий приоритет по отношению к значению dataobject. Если оба параметра опущены, будет возвращен None.
- Параметры
Пример с таблицей:
table = provider_manager.openfile('world.sqlite', dataobject='world')
Пример с запросом:
table = provider_manager.openfile('world.sqlite', sql="select * from world where Страна like 'Р%'")
- Тип результата
-
-
class
axipy.da.TabDataProvider(info)¶ Базовые классы:
axipy.da.DataProviderПровайдер MapInfo.
-
get_destination(filepath, schema)¶ Создает назначение объекта данных.
- Параметры
- Тип результата
-
-
class
axipy.da.PostgreDataProvider(info)¶ Базовые классы:
axipy.da.DataProviderПровайдер для Базы Данных PostgreSQL.
-
get_destination(schema, dataobject, db_name, host, user, password, port=5432)¶ Создает назначение объекта данных.
-
get_source(host, db_name, user, password, port=5432, dataobject=None, sql=None)¶ Создает описательную структуру для источника данных. Она в дальнейшем может быть использована при открытии данных
ProviderManager.open().Примечание
В качестве таблицы можно указать либо ее наименование dataobject либо текст запроса sql.
Примечание
Ссылку на провайдер можно получить через глобальную переменную
axipy.provider_manager.postgre.- Параметры
Пример с указанием имени таблицы:
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)
- Тип результата
-
-
class
axipy.da.OracleDataProvider(info)¶ Базовые классы:
axipy.da.DataProviderПровайдер для Базы Данных Oracle.
Внимание
Для подключения к БД Oracle необходимо настроить
Oracle Instant Client. См. Руководство по установке и активации.-
get_destination(schema, dataobject, db_name, host, user, password, port=1521)¶ Создает назначение объекта данных.
-
get_source(host, db_name, user, password, port=1521, dataobject=None, sql=None)¶ Создает описательную структуру для источника данных. Она в дальнейшем может быть использована при открытии данных
ProviderManager.open().Примечание
В качестве таблицы можно указать либо ее наименование dataobject либо текст запроса sql.
Примечание
Ссылку на провайдер можно получить через глобальную переменную
axipy.provider_manager.oracle.- Параметры
Пример с указанием имени таблицы:
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)
- Тип результата
-
-
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.- Параметры
Пример с указанием имени таблицы:
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)
- Тип результата
-