I am trying to read a LOB field in an Oracle 12c database using cx_Oracle. (Specifically, this is an ST_Geometry field I'm getting the well-known text for.) The problem I'm having is that if the value being returned is sufficiently long, the cursor will chop of some of the initial data in the reading process. For example, if I run the following SQL
SELECT SDE.ST_AsText(shape) FROM street_centerline where seg_id = 960897
in a database client like SQL Developer I get:
LINESTRING ( 2720095.00001681 281993.71874480, 2720084.25003831 281969.81262463, [...])
which is what I'm expecting. But if I use cx_Oracle
import cx_Oracle
db = cx_Oracle.connect('...')
c = db.cursor()
shape = c.execute('SELECT SDE.ST_AsText(shape) FROM street_centerline where seg_id = 960897').fetchone()[0]
print(shape.read())
I get:
( 2720095.00001681 281993.71874480, 2720084.250038 [...])
which is missing the geometry type. This only seems to happen when the LINESTRING
has an unusually high number of vertices and the LOB is very long. Can anyone think of why this is happening?