Frage

Ich verwende einen iSeries Access ODBC-Treiber, um zu versuchen, Abfragen für DB2 für i auszuführen.Ich möchte, dass die zurückkommenden Informationen lesbarer werden.Wie kann ich die Byte-Array-Informationen mit Python konvertieren?Beispielausgabe unten:

>>> cursor.execute("SELECT * FROM QAAPFILE$") 
<pyodbc.Cursor object at 0x00C6D2C0>
>>> for row in cursor:
...     print row         


Example Output:
(1, bytearray(b'\xfd@@@@@@@@@'), 1, 1, 8, 9, bytearray(b'@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@'), bytearray(b'@@@@@@@@@@@@@@@@@@@@'), bytearray(b'\x00<\x02\x82B\x02\x02<\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'))
Many more rows
War es hilfreich?

Lösung

Ich bin mir nicht sicher, warum Sie sich QAAPFILE$ ansehen, und ich bin mir nicht sicher, welche Daten daraus abgerufen wurden muss abgerufen werden als bytearray.Wenn Sie jedoch unbedingt Rohbytes lesen müssen, müssen Sie zunächst wissen, dass IBM i (AS/400, iSeries usw.) nativ EBCDIC ist.Das „@“ ist ein verräterisches Zeichen, das Sie verwenden müssen decode('cp037').In der Codepage 37 (standardmäßiges amerikanisches EBCDIC, möglicherweise müssen Sie für verschiedene Gebietsschemata geringfügige Anpassungen vornehmen) ist ein Leerzeichen „\x40“, was zufällig mit „@“ in ASCII oder UTF-8 identisch ist.

Nun muss ich sagen, dass die Beispiele, die Sie gegeben haben, nicht gut dekodiert werden können, also steckt leider noch mehr dahinter.Wie die Kommentatoren benötige ich weitere Informationen.(Zum Beispiel bin ich immer noch sehr verwirrt, warum Sie sich QAAPFILE$ ansehen sollten.Und um es festzuhalten: Ich habe diese Datei nie gesehen oder verwendet.Ich habe pyODBC oft verwendet, um eine Verbindung zum i herzustellen, und ich musste es nie verwenden bytearray.)

Bearbeiten: Ich hatte jetzt Gelegenheit, mir QAAPFILE$ auf dem Rechner anzusehen, auf dem ich arbeite, und ich kann Ihnen sagen, dass Sie darin keine lesbaren alphanumerischen Zeichen finden werden.Nun, diese zweite Spalte (die erste bytearray Element im Zeilentupel) ist mit der richtigen Dekodierung tatsächlich lesbar, das letzte jedoch nicht wirklich, und zwar nicht einmal, wenn man es direkt auf dem Server über eine native Schnittstelle betrachtet.Es handelt sich wirklich nur um Binärdaten.Ich kann mir nicht vorstellen, welchen Nutzen Sie für diese Datei haben könnten.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top