Page 1 sur 1

Extraction DB2 avec PYTHON3

Posté : mer. 11 août 2021, 11:10:37
par jysaulieres
Bonjour,

J’essaye d’atteindre la BDD d’un IBM i (X) à partir d’un autre IBM i (Y) avec python3.
Je ne maitrise pas l’environnement unix/linux/aix
En utilisant pyodbc j’ai pu extraire des données de la bdd distante, mais impossible en utilisant ibm_db
Mes 2 système sont en V7R3 niveau de cum 20310, TR9, groupe PTF DB2 for IBM i niveau 23, IBM OPEN SOURCE SOLUTIONS FOR I niveau 6

J’ai installé tous les modules via ACS/Gestion de module open source/YUM
Python3
Python3-itoolkit
Python3-ibm_db
Python3-devel
… (tous les packages python3 disponibles)

Quelque soit ce que je mets au niveau du ibm_db.connect, ma connexion echoue ensuite avec l’erreur « Exception: Supplied connection object Parameter is invalid » lors de l’exécution d’un sql, ou lors de l’appel de ibm_db.client_info => je pense que ma connexion n’est pas établie.

Sous QSHELL :
Python3
import ibm_db
conn = ibm_db.connect("*LOCAL", "MonUser", "MonPwd") => test pour connexion en local
(ou conn = "DRIVER={IBM DB2 ODBC DRIVER};DATABASE=MaBase;HOSTNAME=IPServeur;PORT=446;PROTOCOL=TCPIP;UID=MonUser;PWD=MonPwd;" pIBM i distant)
clientinfo = ibm_db.client_info(conn)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
Exception: Supplied connection object Parameter is invalid

Je ne sais pas si le bon driver est installé ni si la definition : DRIVER={IBM DB2 ODBC DRIVER}; est correcte => j’ai pris ca sur le net
D’un coté j’ai lu que le module ibm_db avait son driver, et d’un autre coté j’ai lu qu’il fallait installer le driver « IBM Data Server Driver for ODBC and CLI »
Si oui, lequel installer pour un ibm i (pour qsh ou pase/qp2term : Aix 32 bit? Aix 64 bits ? linux ? … ?
Quelqu’un a une idée de ce que j’aurais pu oublier d’installer ?
Merci

Re: Extraction DB2 avec PYTHON3

Posté : mer. 11 août 2021, 12:24:10
par SebastienB
Bonjour,

as-tu consulter ce site IBM i OSS: https://ibmi-oss-docs.readthedocs.io/en ... EADME.html ?

Séb.

Re: Extraction DB2 avec PYTHON3

Posté : mer. 11 août 2021, 13:56:21
par jysaulieres
oui, celui la et d'autres, mais je comprends pas ce que j'ai pu raté.

Re: Extraction DB2 avec PYTHON3

Posté : lun. 16 août 2021, 12:45:44
par jysaulieres
Bonjour,
J'avais un probleme avec les logiciels sous license.
J'ai pu me connecter en local sur mon systeme et extraire les données d'une table, mais je n'arrive pas à me connecter à une base de données distante (IBM i vers IBM i)
quel port utiliser ?
un serveur doit il être a l'ecoute sur ce port ? si oui, lequel ?
Voila ma ligne de connexion avec python3 :

import ibm_db
conn = ibm_db.connect("DRIVER={IBM DB2 ODBC DRIVER};DATABASE=NOM_BASE;HOSTNAME=10.34.35.36;PORT=446;PROTOCOL=TCPIP;UID=USER;PWD=AZERTY;", "", "")

=> la connexion ne se fait pas (conn=False)

Re: Extraction DB2 avec PYTHON3

Posté : ven. 27 août 2021, 15:09:04
par vazymimil
Bonjour,

Si le problème n'est pas résolu
il me semble que sur IBM i ibm_db et ibm_db_dbi ne peuvent se connecter qu'à des DB cataloguées et ne passe par par ODBC mais directement en DRDA

donc en faisant

Code : Tout sélectionner

ADDRDBDIRE RDB(MABASE ALIAS_MABASE)      
           RMTLOCNAME('10.34.35.36' *IP)
vous devriez pouvoir vous connecter avec

Code : Tout sélectionner

ibm_db.connect("ALIAS_MABASE", "MON_PROFIL", "mot de passe")
ou

Code : Tout sélectionner

ibm_db_dbi.connect("DATABASE=ALIAS_MABASE", "MON_PROFIL", "mot de passe")
vous devriez avoir une connexion

Re: Extraction DB2 avec PYTHON3

Posté : lun. 30 août 2021, 16:27:56
par jysaulieres
Bonjour,
En effet, je ne savais pas que malgré qu'on soit dans Pase (ou qsh) et que les packages/drivers odbc étaient installés (via yum), on ne pouvait pas passer par eux mais uniquement par les systèmes définis dans le RDBDIRE.
Ca fonctionne bien comme vous l'avez indiqué,
Merci.