sql >> Database teknologi >  >> RDS >> Oracle

Sådan konverteres SDO_GEOMTRY i GeoJSON

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)))



  1. ÅR giver fejl

  2. php problem med flere databaser

  3. Mysql Hvor ... I ... OG hvor ... i ... bør kun matche på samme indeks

  4. Opdater forespørgsel ved hjælp af Subquery i SQL Server