DatabaseProviderExportSupport

class axioma.core.dp.DatabaseProviderExportSupport

Класс с описанием допустимых значений дополнительных параметров при экспорте в базу данных

Унаследован от: ProviderExportSupport

geometryColumnNameTag;

Наименование геометрической колонки (Строковое)

sridTag;

Значение SRID (Целое)

renditonColumnNameTag;

Наименование колонки с оформлением (Строковое)

logFileTag;

Наименование файла, куда будут прописываться успешно выполненные команды (Строковое)

errorFileTag;

Наименование файла, куда будут прописываться команды по вставке записей, не принятых сервером (Строковое)

dropTableTag;

Предварительно удалять существующую таблицу, если она присутствует в БД (Логическое)

createIndexTag;

Создавать пространственный индекс (Логическое)

mapCatalogTag;

Регистрация импортируемой таблицы в mapinfo.mapinfo_mapcatalog (Логическое)

DatabaseProvider

class axioma.core.dp.DatabaseProvider

Провайдер для баз данных

Унаследован от: DataProvider, DatabaseProviderExportSupport

DatabaseProvider(parent=None)

Конструктор

Параметры:parent (QObject или None) – Родительский объект
createDatabaseDefinition(host, dbName, userName, password, port = 0)

Создание описания базы данных

Параметры:
  • host (str) – Наименование хоста
  • dbName (str) – Наименование базы данных
  • userName (str) – Имя пользователя для подключения к базе данных
  • password (str) – Пароль
  • port (int) – Порт. Если незадано значение, ставится значение по-умолчанию
Результат:

Созданный объект описания

Тип результата:

DatabaseDefinition

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)