@Kotar4ik

Как реализовать в Python подключение к IBM DB2 базе данных?

Добрый день.

Помогите, пожалуйста, с подключением к базе данных в Python.

Ипробовал несколько вариантов через различные библиотеки, но никак не получается.

1 вариант:

import jaydebeapi

connect = jaydebeapi.connect(
    'com.ibm.as400.access.AS400JDBCDriver', 
    'jdbc:as400://hostname.com;libraries=database_name;',['user','password'], 
    'Driver\jt400.jar')

curs = connect.cursor()
test = "SELECT 'Hello World!' AS Message FROM SYSIBM.SYSDUMMY1"

curs.execute(test)
curs.fetchall()


curs.close()
connect.close())


В нем на первый взгляд кажется подключение прошло успешно, но при curs.fetchall в консоль ничего не выводится (даже ошибка). Тот же SELECT через DBeaver работает отлично.

2 вариант:
import ibm_db as ibm
classpath='Driver\jt400.jar'

ibm.connect(
        "DRIVER={{com.ibm.as400.access.AS400JDBCDriver}};"
        "DATABASE=DATABASE;"
        "HOSTNAME=HOSTNAME.COM;"
        "PORT=446;"
        "PROTOCOL=TCPIP;"
        "UID=user;"
        "PWD=password;",
        "", "")


В этом случае даже подключение не происходит. Выдает ошибку:
SQLCODE=-30061][CLI Driver] SQL30061N  The database alias or database name "DATABASE             " was not found at the remote node.  SQLSTATE=08004


3 вариант:

from py4j.java_gateway import JavaGateway

user = "user";
password = "password";
jdbc_url = "jdbc:as400://hostname.com;libraries=DATABASE;"


# Open JVM interface with the JDBC Jar
jdbc_jar_path = 'Driver\jt400.jar'
gateway = JavaGateway.launch_gateway(classpath='Driver\jt400.jar') 
jvm = gateway.jvm

# Load the JDBC Jar
jdbc_class = "com.ibm.as400.access.AS400JDBCDriver"
jvm.Class.forName(jdbc_class)

# Initiate connection

con =  jvm.DriverManager.getConnection(jdbc_url, user, password)


В этом случае выдает ошибку:
TypeError: 'JavaPackage' object is not callable

Помогите, пожалуйста, реализовать подключение к БД с помощью Python. В гугле все перерыл, никак не получается сделать это.

Спасибо!
  • Вопрос задан
  • 769 просмотров
Пригласить эксперта
Ответы на вопрос 2
@alexbprofit
Junior SE
а зачем именно к db2?
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы