Điều này đang sử dụng phiên bản (chưa được phát hành) của cx_Oracle hỗ trợ ràng buộc các đối tượng và các cách sử dụng nâng cao hơn khác của các đối tượng. Sử dụng mẫu được cung cấp với cx_Oracle để chứng minh việc chèn hình học, đoạn mã sau sẽ chuyển đổi đối tượng được tạo theo cách đó thành JSON. Hàm ObjectRepr () bao gồm bên dưới sẽ hoạt động cho bất kỳ đối tượng nào được trả về từ Oracle. Nó chỉ đơn giản là đọc siêu dữ liệu về đối tượng và biến đối tượng thành từ điển các thuộc tính hoặc danh sách các giá trị.
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)))