# Провайдеры данных

За каждый тип данных отвечает провайдер данных `axipy.ProviderManager`. Провайдер владеет информацией о том, как представлять конкретный тип объектов данных и как ими манипулировать. Класс `axipy.ProviderManager` содержит все зарегистрированные провайдеры данных.

Каждый провайдер имеет свои особенности и возможности, но общие концепции, такие как открытие и создание, выделены в общий интерфейс `axipy.DataProvider`. В то же время конкретный провайдер может иметь дополнительные функции и параметры, свойственные только ему.

Для получения списка загруженных провайдеров есть функция `axipy.ProviderManager.loaded_providers()`.

Например:

    provider_manager.loaded_providers()

    {'CsvDataProvider': 'Файловый провайдер: Текст с разделителями',
      'DwgDgnFileProvider': 'Провайдер DWG и DGN',
      'GdalDataProvider': 'Растровый провайдер GDAL',
      'MifMidDataProvider': 'Провайдер данных MIF-MID',
      'OgrDataProvider': 'Векторный провайдер OGR',
      'ShapeDataProvider': 'Shapefile',
      'PgDataProvider': 'PostgreSQL',
      'OracleDataProvider': 'oracle',
      'MsSqlDataProvider': 'MS SQL Server',
      'RestDataProvider': 'ArcGIS REST',
      'SqliteDataProvider': 'Векторный провайдер sqlite',
      'TabDataProvider': 'MapInfo',
      'TmsDataProvider': 'Тайловые сервисы',
      'WfsDataProvider': 'Web Feature Service',
      'WmsDataProvider': 'Web Map Service',
      'WmtsDataProvider': 'Web Map Tile Service',
      'XlsDataProvider': 'Провайдер чтения файлов Excel'}

Для открытия разных источников данных может потребоваться разная информация. Например, для подключения к базе данных нужно указать имя пользователя и пароль и прочее. Поэтому для большинства провайдеров данных определены функции задания источников данных `axipy.DataProvider.get_source()` с дополнительными параметрами. Например, `axipy.CsvDataProvider.get_source()`, `axipy.PostgreDataProvider.get_source()` и другие.

Например:

    source = provider_manager.csv.get_source('path/to/mydata.csv', delimiter=';')
    table = source.open()

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

    table = provider_manager.csv.open('path/to/mydata.csv', delimiter=';')

Или:

    table = provider_manager.openfile('path/to/mydata.csv', delimiter=';')

См.также

Подробнее в документации `axipy.ProviderManager`.

- Открытие/Создание
- Импорт/Экспорт