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
- Схема таблицы. Задается массивом объектов, содержащих атрибуты.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)
- Тип результата
-
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.
- Тип результата
-
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)
- Тип результата
Открывает данные по описанию. Аналогична функции
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
- Тип результата
-
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
-
file_extensions
()¶ Список поддерживаемых расширений файлов.
-
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)
- Тип результата
-