Добрый день.
Помогите, пожалуйста, с подключением к базе данных в 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. В гугле все перерыл, никак не получается сделать это.
Спасибо!