Подключение к базе данных db2 с помощью Python - PullRequest
0 голосов
/ 19 декабря 2018

Я работаю над приложением, которое должно подключаться к базе данных ibm db2.Используя DBeaver, я могу успешно подключиться к базе данных (я предоставляю ему файлы db2cc.jar и db2cc4.jar ).

Мне кажется, что DBeaver используетУчетные данные моего окна для входа в систему, потому что мне не нужно было вводить логин или пароль для подключения.

Теперь я пытался подключиться к той же базе данных, используя python 3.7 и последнюю версию pypi *Пакет 1009 * ibm_db .Я не устанавливал ничего другого.

import ibm_db

# ...
connection_string = "DATABASE=" + self.params['schema'] + ";" + \
                                         "HOSTNAME=" + self.params['host'] + ";" + \
                                         "PORT=" + self.params['port'] + ";" + \
                                         "PROTOCOL=TCPIP;" + \
                                         "SECURITYMECHANISM=4;" + \
                                         "UID=" + self.params['user'] + ";" + \
                                         "PWD=" + self.params['password'] + ";"


try:
    self.connection = ibm_db.connect(connection_string, "", "")
    # ...

Используя мои учетные данные Windows в параметрах, я получаю следующее сообщение об ошибке:

Connection error
Bad credentials
SQLCODE=-30082
08001

Из того, что я видел при переполнении стекаподключение к базе данных db2 затруднено ...

Кто-нибудь знает, как подключиться?Используя учетные данные Windows или иное ...

Спасибо!

Ответы [ 2 ]

0 голосов
/ 19 декабря 2018

Db2 отлично работает с Python.

Перед началом работы необходимо знать некоторые основы, такие как:

  • какая операционная система запускает целевую базу данных Db2 и
  • , какой тип клиентаиспользуется (java, odbc / cli, .net и т. д.) и
  • , какой тип аутентификации / шифрования используется для базы данных (ssl, аутентификация на основе сервера / + / - / шифрование и т. д.).
  • - это удаленная база данных rdbms Apache DERBY или Db2.

Прежде чем начать, изучите эти основы.Вы должны поговорить с людьми, которые запускают Db2-сервер.

Примечание: в своем вопросе вы упоминаете (SecurityMechanism=4) com.ibm.db2.jcc.DB2BaseDataSource.USER_ONLY_SECURITY - это не относится кКлиенты JAVA, это актуально, если менеджер баз данных DERBY.

Для python пакет ibm_db не является Java-приложением.

DBeaver является Java-приложением (следовательно, он использует db2jcc.jar илиdb2jcc4.jar и файл лицензии для подключения к удаленной базе данных).

Учетные данные Windows можно использовать только для подключения к базе данных Db2, когда эта база данных Db2 работает в Microsoft-Windows, и учетные данныеработать на имени хоста с запущенным Db2-сервером.Для любых других комбинаций администратор должен выдать вам ID пользователя / пароль, который имеет отношение к целевому имени хоста.

Для пакета ibm_db должен быть установлен Db2-клиент.Db2-клиент устанавливается отдельно.Существует различных типов Db2-клиента в зависимости как от того, в какой операционной системе работает ваш Db2-сервер, так и от того, сколько функциональных возможностей вам необходимо иметь в своем Db2-клиенте.Если ваш удаленный Db2-сервер работает в Linux, Unix, Windows или Z / OS, вы можете использовать «Клиент времени выполнения IBM Data Server», который вы можете скачать с веб-сайта IBM по преимуществам паспортов или получить от своих внутренних ИТ-специалистов.Если ваш Db2-сервер работает на i-Series (AS / 400), вы должны получить его драйверы у администратора i-Series.Для Z / OS или i-Series вам дополнительно понадобится файл лицензии (который стоит денег), и вы должны получить его у администратора, если только ваша компания не использует шлюз Db2-connect, в этом случае вам не нуженотдельный файл лицензии на вашей рабочей станции.

0 голосов
/ 19 декабря 2018

Попробуйте следующую строку подключения, если ваш клиент db2 и сервер находятся на одном хосте.Измените константы 'mydb' и 'DB2' (имя экземпляра db2, вы можете получить его с помощью утилиты db2ilist) в соответствии с вашим регистром.

ibm_db.connect('DATABASE=mydb;Instance=DB2;PROTOCOL=IPC;', '', '')
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...