Anschluss von IBM AS400-server, die für die Datenbank-Operationen hängt

Ich versuche zu sprechen, um eine AS400 in Python. Das Ziel ist die Verwendung von SQLAlchemy, aber wenn ich konnte nicht bekommen, dass die Arbeit, ging ich wieder zu einem basic-Skript mit nur ibm_db statt ibm_db_sa.

import ibm_db
dbConnection = ibm_db.pconnect("DATABASE=myLibrary;HOSTNAME=1.2.3.4;PORT=8471;PROTOCOL=TCPIP;UID=username;PWD=password", "", "") #this line is where it hangs
print ibm_db.conn_errormsg()

Scheint das problem zu sein der port. Wenn ich die 50000 sehe ich in allen Beispielen, bekomme ich eine Fehlermeldung. Wenn ich 446, bekomme ich eine Fehlermeldung. Der verblüffende Teil ist dies: wenn ich 8471, die IBM sagt zu tun, bekomme ich keine Fehlermeldung, kein timeout, keine Antwort zu löschen. Ich habe das Skript ausgeführt, die über zwanzig Minuten, und es sitzt nur da, tut nichts. Es ist aktiv, denn ich kann nicht verwenden Sie den Befehl-Eingabeaufforderung, aber Sie gibt mir nie irgendein feedback jeglicher Art.

Diese gleichen 400 wird von der Firma für die ich arbeite jeden Tag, für die Protokollierung, E-Mail, und (große) Datenbank-Nutzung, so dass ich weiß, dass es funktioniert. Die software, die wir verwenden, die spricht, um die Datenbank hinter den kulissen läuft Prima auf meinem Rechner. Das sagt mir, mein Treiber ist gut, die Netzwerk-Einstellungen richtig sind, und so weiter. Ich kann auch mit telnet in den 400 von hier.

Ich bin auf der SQLAlchemy und ibm_db-E-Mail-Listen, und kommunizieren mit Ihnen seit Tagen über dieses problem. Ich habe auch gegoogelt es so sehr, ich bin angefangen zu laufen, von un-besuchte links in meine Suchergebnisse. Niemand scheint das problem der Verbindung hängen auf unbestimmte Zeit. Wenn es etwas gibt, kann ich versuchen in Python, ich werde es versuchen. Ich beschäftige mich nicht mit der 400 direkt, aber ich kann den Kerl Fragen, der hat zu überprüfen/konfigurieren was ich brauche. Wie ich sagte, obwohl, mehreren Arbeitsplätzen sprechen kann, die die 400-Datenbank mit keine Probleme und die Abfragen ausführen, die gegen die Bibliothek, die ich zugreifen will, funktioniert gut, wenn Sie von der 400 selbst. Wenn jemand irgendwelche Vorschläge, ich würde schätzen, hören Sie. Danke!

  • Wenn Sie weiter auf dieser, es wäre toll, wenn Sie gemeinsam hier. Ich war stochern den code für ibm_db_sa um zu sehen, ob etwas sprang mich an, und etwas Tat: Die pyodbc.py Modul innerhalb ibm_db_sa hat eine Klasse namens AS400Dialect_pyodbc, und es hat den richtigen Wert für pyodbc_driver_name. Also klar mindestens einige Versuch wurde gemacht, um SQLAlchemy arbeiten mit DB2 für ich.
  • Habe ich noch nicht. Gut, meine app ist bewegt, aber für jetzt bin ich verlassen Sie sich nur auf pyodbc. Ich habe SA durch die Verbindung zu pyodbc, dann vorbei an der Funktion, welche die Verbindung zu create_engine, aber das hat nicht funktioniert.
  • Wie viel nicht mit der zusätzliche Funktionalität von SQLAlchemy zu verletzen? Und wie gut kennen Sie (a) wissen, Python und (b) wissen, SQLAlchemy? Der Grund warum ich Frage ist, weil durch ein bisschen mehr stochern und stupsen, ich habe es geschafft zu bekommen create_engine() um erfolgreich erstellen ein Motor, und die Verwendung der engine zu tun nackt SQL-Abfragen. In anderen Worten, ich kann machen SQLAlchemy dienen als eine äußerst wechselhafte wrapper für PyODBC, für die kein Wert Hinzugefügt. Ich bin glücklich zu teilen, meine Erkenntnisse, aber ich habe noch nie verwendet, ORM, so kann es durchaus sein, weitere Probleme lauern über, bevor Sie voll nutzen können SQLAlchemy.
  • Also Woher dein wissen kommt in ist, wenn es mehr Experimente und Fixierung, die getan werden muss, können Sie haben, die ärmel hochkrempeln und Holen Sie sich Ihre Hände ein wenig schmutzig.
  • Ich fühle mich wohl in Python, aber ich bin neu in SQLAlchemy. Der Hauptgrund für mich, die SA ist die Bequemlichkeit von ORM, also wenn alle damit umgehen können, ist gerade SQL, ich denke, ich kann auch stick zu pyodbc. Vielen Dank für das follow-up, obwohl.
  • Naja, nicht aufgeben, auf das ORM, bevor Sie versuchen, es zuerst. Ich weiß, es wird funktionieren völlig, sobald Sie beheben die ODBC-Verbindung wie ich beschrieben habe in meiner Antwort.

InformationsquelleAutor AH16 | 2016-02-17
Schreibe einen Kommentar