2017-12-08 4 views
0

Ich arbeite an einem Projekt, bei dem ich Daten aus einer SAP-HANA-Datenbank abrufen muss. Ich habe SAP Cloud Connector und PyHDB für den Job verwendet. Ich führe meine Select-Anweisung aus und erhalte die Ergebnisdaten. Eines der Felder ist ein TEXT-Typ, der große Artikel enthält. Während ich jede Zeile wiederhole, muss ich irgendwie die Daten aus dem TEXT-Feld in eine Zeichenkette bringen. Allerdings kann ich nur die ersten 1024 Zeichen erhalten. Das Objekt, das den TEXT speichert, scheint ein StringIO-Typ zu sein. Wie kann ich die gesamten Textdaten anstelle der ersten 1024 Zeichen lesen?TEXT-Typ aus SAP HANA in Python lesen

import pyhdb 

connection_from = pyhdb.connect(
host="localhost", 
port=00000, 
user="user", 
password="password" 
) 
cursor_from = connection_from.cursor() 

cursor_from.execute('SELECT * FROM SCHEMA.TABLE') 
results= cursor_from.fetchall() 

for row in results: 
    text = row[2].data.getvalue() 

connection_from.close() 

Das ist das, was das Objekt wie folgt aussieht: NClob

ich den ganzen Text in einen String bekommen müssen dann ausdrucken. Vielen Dank.

+0

Könnten Sie die Daten hier oder stattdessen in einen Text posten? https://gist.github.com/ Ich kann aus irgendeinem Grund nicht auf imgur zugreifen. – spookylukey

Antwort

0

Nach der docs, müssen Sie .read() auf das zurückgegebene Objekt aufrufen, übergeben Sie die Anzahl der Bytes, die Sie erhalten möchten. Dies ist kein sehr freundliches Interface, aber wenn Sie eine Zahl eingeben, die definitiv größer ist als all Ihre Objekte, erhalten Sie alles. Oder Sie könnten eine kleine Schleife erstellen, die mit größeren Werten iteriert, bis Sie alles haben - wenn die Länge der von .getvalue() zurückgegebenen Zeichenfolge zunimmt.