axioma.core.dp.
DatabaseProviderExportSupport
¶Класс с описанием допустимых значений дополнительных параметров при экспорте в базу данных
Унаследован от: ProviderExportSupport
geometryColumnNameTag;
Наименование геометрической колонки (Строковое)
sridTag;
Значение SRID (Целое)
renditonColumnNameTag;
Наименование колонки с оформлением (Строковое)
logFileTag;
Наименование файла, куда будут прописываться успешно выполненные команды (Строковое)
errorFileTag;
Наименование файла, куда будут прописываться команды по вставке записей, не принятых сервером (Строковое)
dropTableTag;
Предварительно удалять существующую таблицу, если она присутствует в БД (Логическое)
createIndexTag;
Создавать пространственный индекс (Логическое)
mapCatalogTag;
Регистрация импортируемой таблицы в mapinfo.mapinfo_mapcatalog (Логическое)
axioma.core.dp.
DatabaseProvider
¶Провайдер для баз данных
Унаследован от: DataProvider
, DatabaseProviderExportSupport
DatabaseProvider
(parent=None)¶Конструктор
Параметры: parent ( QObject
илиNone
) – Родительский объект
createDatabaseDefinition
(host, dbName, userName, password, port = 0)¶Создание описания базы данных
Параметры: Результат: Созданный объект описания
Тип результата:
defaultPort
()¶Стандартный порт для подключения к конкретной СУБД
Результат: True, если да. В противном случае False Тип результата: bool
createDataSourceDefinition
(typeId)¶Создание описания источника данных
Параметры: typeId ( str
) – Строка с типом провайдераРезультат: Созданный объект описания Тип результата: DataSourceDefinition
linkedProvider
()¶Провайдер данных, который используется для работы со связанными таблицами
Результат: Провайдер Тип результата: DataProvider
Пример использования:
# Открываем исходную таблицу table = open_file('SubjectRF.TAB') try: # Находим необходимый провайдер. В данном случае PostgreSQL dataProvider = gui.dataProviderById("PgDataProvider") if dataProvider is not None: # Описание источника данных, куда будем производить экспорт dbDefinition = dataProvider.createDatabaseDefinition('localhost', 'esti', 'postgres', '') # Параметры экспорта jd = JsonDefinition() # Установка в параметрах описания источника подключения JsonDBExportController.setDbDef(jd, dbDefinition) tableName = '{}_export'.format(table.name()) # Наименование результирующей таблицы JsonDBExportController.setObject(jd, tableName) # Координатная система JsonDBExportController.setPrj(jd, table.coordSystem()) # Дополнительные параметры (опционально) params = { # Скрипт с успешно выполненными командами DatabaseProviderExportSupport.logFileTag: QDir.temp().filePath('export_success.sql'), # Скрипт с ошибочными записями DatabaseProviderExportSupport.errorFileTag: QDir.temp().filePath('export_error.sql'), # Наменование колонки с оформлением DatabaseProviderExportSupport.renditonColumnNameTag: 'mi_style', # Наменование колонки с геометрией DatabaseProviderExportSupport.geometryColumnNameTag:'geometry', # Предварительно удалять таблицу DatabaseProviderExportSupport.dropTableTag:True, # Создавать пространственный индекс DatabaseProviderExportSupport.createIndexTag:True, # Регистрация в таблице MAPINFO_MAPCATALOG DatabaseProviderExportSupport.mapCatalogTag:True, # SRID с базе данных для проекции DatabaseProviderExportSupport.sridTag:4326 } # Устанавливаем дополнительные параметры JsonDBExportController.setExportParams(jd, params) # Создаем контекст context = ProviderExportContext(ModifiedTableSchema(table.tableSchema())) # Открывем запрос для исходной таблицы cursor = table.select(QuerySelectAll( table.tableSchema().attributeNames())) # Производим экспорт dataProvider.exportFeatures(cursor, context, jd); else: raise RuntimeException("Провайдер не найден") except Exception as ex: print(ex)