Открытие/Создание¶
Открытие и создание объектов данных axipy.da.DataObject
выполняется
провайдерами данных. Класс axipy.da.ProviderManager
представляет
коллекцию зарегистрированных провайдеров данных.
Открытие¶
Самый простой способ открыть объект данных из файла -
использовать функцию axipy.da.ProviderManager.openfile
. Функция сама
найдет подходящий провайдер данных для открытия.
Совет
Это предпочтительный способ.
# filepath = 'path/to/file.tab'
table = provider_manager.openfile(filepath)
Примечание
При открытии данных они попадают в единый каталог
axipy.da.DataManager
.
При необходимости указать больше параметров для открытия, или если параметры
по умолчанию не подходят, можно явно использовать провайдер данных. Необходимый
провайдер данных можно получить из коллекции зарегистрированных провайдеров
данных axipy.da.ProviderManager
.
# csv_filepath = 'path/to/file.csv'
csv_table = provider_manager.csv.open(csv_filepath, delimiter='\t')
Самый сложный способ - открытие через словарь dict
. Здесь нужно
заранее знать все параметры, их допустимые значения и идентификатор провайдера
данных.
"""Открывает csv файл через определение ``definition``.
Исключительно в качестве примера. Открывать csv проще провайдером.
"""
# csv_filepath = 'path/to/file.csv'
definition = {
'src': csv_filepath,
'delimiter': '\t',
'charset': 'utf8',
'hasNamesRow': True,
'provider': 'CsvDataProvider'
}
csv_table = provider_manager.open(definition)
При открытии таблиц из СУБД задаются как параметры подключения, так и требуемая таблица или текст запроса.
definition = provider_manager.postgre.get_source(host='192.168.0.2', db_name='test', user='test', password='pass', dataobject='world')
table = provider_manager.open(definition)
definition = provider_manager.oracle.get_source(host='192.168.0.2', db_name='ORCL', user='test', password='pass', sql='select * from world')
table = provider_manager.open(definition)
Создание¶
Аналогично, самый простой способ создания файлов - с помощью
функции axipy.da.ProviderManager.createfile
:
# filepath = 'path/to/file.tab'
schema = Schema(
Attribute.string('country', 30),
Attribute.string('capital', 30),
coordsystem='prj:Earth Projection 1, 104'
)
table = provider_manager.createfile(filepath, schema)
Примечание
При создании объекта данных он автоматически открывается.
Для задания дополнительных параметров или использования специализированных возможностей провайдера данных, можно явно вызывать методы конкретного провайдера.
schema = Schema(
Attribute.string('country', 30),
Attribute.string('capital', 30),
)
temp_table = provider_manager.shp.open_temporary(schema)
Если и этот способ не подходит для решения какой-то задачи, можно создавать объекты данных из словаря. Это самый сложный и непрактичный способ.