Extraction DB2 avec PYTHON3

configuration Apache, Zend et PHP , Web services
Répondre
jysaulieres
Messages : 26
Enregistré le : ven. 26 oct. 2018, 09:58:31

Extraction DB2 avec PYTHON3

Message 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
Merci pour votre aide.
JYSA

SebastienB
Messages : 51
Enregistré le : ven. 22 janv. 2021, 10:21:13

Re: Extraction DB2 avec PYTHON3

Message par SebastienB »

Bonjour,

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

Séb.

jysaulieres
Messages : 26
Enregistré le : ven. 26 oct. 2018, 09:58:31

Re: Extraction DB2 avec PYTHON3

Message par jysaulieres »

oui, celui la et d'autres, mais je comprends pas ce que j'ai pu raté.
Merci pour votre aide.
JYSA

jysaulieres
Messages : 26
Enregistré le : ven. 26 oct. 2018, 09:58:31

Re: Extraction DB2 avec PYTHON3

Message 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)
Merci pour votre aide.
JYSA

vazymimil
Messages : 32
Enregistré le : ven. 28 sept. 2018, 17:14:46

Re: Extraction DB2 avec PYTHON3

Message 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
Nicolas

jysaulieres
Messages : 26
Enregistré le : ven. 26 oct. 2018, 09:58:31

Re: Extraction DB2 avec PYTHON3

Message 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.
Merci pour votre aide.
JYSA

Répondre