sql >> データベース >  >> RDS >> Oracle

GeoJSONでSDO_GEOMTRYを変換する方法

    これは、オブジェクトのバインドおよびその他のより高度なオブジェクトの使用をサポートする(まだリリースされていない)バージョンの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)))
    



    1. MySQLに関するQuartzJDBCJobStoreの問題

    2. Oracleの特殊文字

    3. mysqlclientをインストールできません

    4. 垂直出力を使用してSQLiteクエリ結果を表示する