#python #db2
#python #db2
Вопрос:
Env: Python 3.7 64-разрядный Windows Server 2012 DB2 версии 11.1.2, модуль ibm_db версии 3.0.1
Код:
oCon = ibm_db.connect(ConnectString)
if oCon:
sSQL = 'Select 1 as X From SYSIBM.SYSDUMMY1'
oStmt = ibm_db.exec_immediate(oCon,sSQL) # Offending line
print('Yee haw! Finally made it to this line')
Нарушающая строка просто немедленно завершает работу программы, как будто ничего не произошло, не вызывая исключения. Также я видел, как другие люди сообщали о другой проблеме после установки и импорта ibm_db о непрерывных предупреждениях pylint ‘ibm_db’ не имеет элемента ‘connect’, но он выполняет метод connect. Кто-то может спросить, почему бы просто не использовать pyodbc. Мне нужно извлечь столбцы blob / clob из DB2, и pyodbc указывает на это / драйвер ibm odbc пока не поддерживает эти типы данных.
Комментарии:
1. Я бы рекомендовал открыть проблему здесь: github.com/ibmdb/python-ibmdb
2. добавлено добавлена информация о версии для db2-client хорошо, если вы используете метод подключения с длинной строкой dsn метода ibm_db.connect, который он использует в зависимости от того, какой клиент поставляется с модулем. Если у вас есть локально каталогизированная база данных, вы можете просто использовать database / user / pwd … . Я пробовал оба … одинаковое поведение.
3. Для меня корректно работает с ibm_db 3.0.1 и Db2 версии 11.1, а Db2-client — версия 11.1.4.4 в Windows x64. Возможно, у вас проблема с конфигурацией. Используйте трассировку CLI чтобы увидеть, что происходит под прикрытием, Db2-Knowledge-Centre объясняет, как настроить трассировку CLI.
Ответ №1:
В вашем коде:
oCon = ibm_db.connect(ConnectString)
должно быть:
oCon = ibm_db.connect(ConnectString, '', '')