Zufällig musste ich Daten von IBM i (auch als AS400 bekannt) abrufen.
Ich möchte Daten unter IBM i abrufen und unter Linux oder Windows verwenden Möglicherweise möchten Sie die Daten in Ihrem System zum maschinellen Lernen oder zur Analyse verwenden. Wenn Sie einfach Python verwenden, können Sie es auch unter IBM i verarbeiten.
Dieses Mal möchte ich jedoch GPU für DL oder ML verwenden, daher muss ich die Daten unter Linux bringen. Dafür werde ich die Daten mit JDBC + Python abrufen.
Natürlich können Sie Java zum Abrufen der Daten verwenden. Dieses Mal habe ich mich für JDBC von Python entschieden, weil ich besser in Python bin. (DL und ML werden häufig in Python geschrieben, daher ist es möglicherweise einfacher, sie in diesen Prozess einzubeziehen.)
Dieses Mal werden wir "JayDeBeApi" als Python-Bibliothek verwenden, um die JDBC-API zu erreichen. https://github.com/baztian/jaydebeapi
Es werden viele DB-Typen unterstützt. Es gibt auch DB2!
Supported databases
In theory every database with a suitable JDBC driver should work. It is confirmed to work with the following databases:
SQLite Hypersonic SQL (HSQLDB) IBM DB2 IBM DB2 for mainframes Oracle Teradata DB Netezza Mimer DB Microsoft SQL Server MySQL PostgreSQL many more...
Dieses Mal läuft es unter Python 3.6.
Die Version jeder Software lautet wie folgt
Sie können es mit pip installieren.
pip install JayDeBeApi
Wenn die Version von JPype die neueste ist, ist zur Laufzeit ein Fehler aufgetreten, daher habe ich sie mit 0.6.3 neu installiert.
pip install JPype1==0.6.3 --force-reinstall
Dieses Mal verwenden wir die Jar-Datei, die standardmäßig in IBM i enthalten ist.
Da jt400.jar
im folgenden Verzeichnis gespeichert ist, kopieren Sie es von IBM i in die zu verwendende Linux-Umgebung.
/QIBM/ProdData/HTTP/Public/jt400/lib/jt400.jar
Stellen Sie "
import jaydebeapi
conn = jaydebeapi.connect("com.ibm.as400.access.AS400JDBCDriver", "jdbc:as400://<hostname>", ["<user>", "<password>"], "/home/IBMi/jt400.jar",)
cur = conn.cursor()
cur.execute("select * from TSLIB.WORKDAY")
cur.fetchall()
curs.close()
conn.close()
Durch Ausführen dieses Python-Skripts konnte ich die Daten von IBM i abrufen. Durch Ändern der SQL-Anweisung von "Ausführen" können Sie auch die Operation in der Datenbank ändern.