Ini menggunakan versi cx_Oracle (yang belum dirilis) yang mendukung pengikatan objek dan penggunaan objek yang lebih canggih lainnya. Menggunakan contoh yang disediakan dengan cx_Oracle untuk mendemonstrasikan penyisipan geometri, kode berikut akan mengubah objek yang dibuat dengan cara itu menjadi JSON. Fungsi ObjectRepr() yang disertakan di bawah ini harus berfungsi untuk objek apa pun yang dikembalikan dari Oracle. Itu hanya membaca metadata pada objek dan mengubah objek menjadi kamus atribut atau daftar nilai.
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)))