यह cx_Oracle के (अभी तक अप्रकाशित) संस्करण का उपयोग कर रहा है जो वस्तुओं के बंधन और वस्तुओं के अन्य उन्नत उपयोगों का समर्थन करता है। ज्यामिति के सम्मिलन को प्रदर्शित करने के लिए cx_Oracle के साथ दिए गए नमूने का उपयोग करते हुए, निम्न कोड उस तरह से बनाई गई वस्तु को JSON में बदल देगा। नीचे दिए गए ObjectRepr() फ़ंक्शन को Oracle से लौटाई गई किसी भी वस्तु के लिए काम करना चाहिए। यह केवल वस्तु पर मेटाडेटा पढ़ता है और वस्तु को विशेषताओं के शब्दकोश या मूल्यों की सूची में बदल देता है।
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)))