Dette bruger den (endnu ikke udgivet) version af cx_Oracle, som understøtter binding af objekter og anden mere avanceret brug af objekter. Ved at bruge eksemplet leveret med cx_Oracle til at demonstrere indsættelsen af geometri, vil følgende kode transformere objektet, der er oprettet på den måde, til JSON. ObjektRepr()-funktionen inkluderet nedenfor burde fungere for ethvert objekt, der returneres fra Oracle. Den læser simpelthen metadataene på objektet og gør objektet til en ordbog med attributter eller en liste over værdier.
import cx_Oracle
import json
connection = cx_Oracle.Connection("user/[email protected]")
typeObj = connection.gettype("SDO_GEOMETRY")
cursor = connection.cursor()
cursor.execute("""
select Geometry
from TestGeometry
where IntCol = 1""")
obj, = cursor.fetchone()
def ObjectRepr(obj):
if obj.type.iscollection:
returnValue = []
for value in obj.aslist():
if isinstance(value, cx_Oracle.Object):
value = ObjectRepr(value)
returnValue.append(value)
else:
returnValue = {}
for attr in obj.type.attributes:
value = getattr(obj, attr.name)
if value is None:
continue
elif isinstance(value, cx_Oracle.Object):
value = ObjectRepr(value)
returnValue[attr.name] = value
return returnValue
print("JSON:", json.dumps(ObjectRepr(obj)))