DatabaseProviderExportSupport ======================================= .. currentmodule:: axioma.core.dp .. class:: DatabaseProviderExportSupport Класс с описанием допустимых значений дополнительных параметров при экспорте в базу данных Унаследован от: :class:`~axioma.core.dp.ProviderExportSupport` .. py:attribute:: geometryColumnNameTag; Наименование геометрической колонки (Строковое) .. py:attribute:: sridTag; Значение SRID (Целое) .. py:attribute:: renditonColumnNameTag; Наименование колонки с оформлением (Строковое) .. py:attribute:: logFileTag; Наименование файла, куда будут прописываться успешно выполненные команды (Строковое) .. py:attribute:: errorFileTag; Наименование файла, куда будут прописываться команды по вставке записей, не принятых сервером (Строковое) .. py:attribute:: dropTableTag; Предварительно удалять существующую таблицу, если она присутствует в БД (Логическое) .. py:attribute:: createIndexTag; Создавать пространственный индекс (Логическое) .. py:attribute:: mapCatalogTag; Регистрация импортируемой таблицы в mapinfo.mapinfo_mapcatalog (Логическое) DatabaseProvider ==================== .. currentmodule:: axioma.core.dp .. class:: DatabaseProvider Провайдер для баз данных Унаследован от: :class:`~axioma.core.dp.DataProvider`, :class:`~axioma.core.dp.DatabaseProviderExportSupport` .. py:method:: DatabaseProvider(parent=None) Конструктор :param parent: Родительский объект :type parent: :class:`~PyQt5.QtCore.QObject` или :any:`None` .. py:method:: createDatabaseDefinition(host, dbName, userName, password, port = 0) Создание описания базы данных :param host: Наименование хоста :type host: :class:`str` :param dbName: Наименование базы данных :type dbName: :class:`str` :param userName: Имя пользователя для подключения к базе данных :type userName: :class:`str` :param password: Пароль :type password: :class:`str` :param port: Порт. Если незадано значение, ставится значение по-умолчанию :type port: :class:`int` :return: Созданный объект описания :rtype: :class:`~axioma.core.dp.DatabaseDefinition` .. py:method:: defaultPort() Стандартный порт для подключения к конкретной СУБД :return: True, если да. В противном случае False :rtype: :class:`bool` .. py:method:: createDataSourceDefinition(typeId) Создание описания источника данных :param typeId: Строка с типом провайдера :type typeId: :class:`str` :return: Созданный объект описания :rtype: :class:`~axioma.core.dp.DataSourceDefinition` .. static std::shared_ptr databaseDefinition(QString host, QString dbName, QString userName, const QString &password, int port); .. py:method:: linkedProvider() Провайдер данных, который используется для работы со связанными таблицами :return: Провайдер :rtype: :class:`~axioma.core.dp.DataProvider` Пример использования: .. code-block:: python # Открываем исходную таблицу 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)