sql >> Database >  >> RDS >> Oracle

Hoe SDO_GEOMTRY in GeoJSON te converteren

Dit maakt gebruik van de (nog niet uitgebrachte) versie van cx_Oracle die het binden van objecten en ander meer geavanceerd gebruik van objecten ondersteunt. Met behulp van het voorbeeld dat is meegeleverd met cx_Oracle om het invoegen van geometrie te demonstreren, transformeert de volgende code het object dat op die manier is gemaakt in JSON. De functie ObjectRepr() die hieronder is opgenomen, zou moeten werken voor elk object dat door Oracle wordt geretourneerd. Het leest eenvoudig de metadata over het object en verandert het object in een woordenboek van attributen of een lijst met waarden.

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. PHP Foreach op MySQLi Resultatenset

  2. Hoe date_trunc() werkt in PostgreSQL

  3. Zoek dynamisch kolomnamen voor een tabel op in een sql-query

  4. Fout met MySql tijdens Bundle Install