For the first time in my life i am working with Python and I have a problem that I can not find how to solve so i will try to be clear to explain myself as best as possible and read their comments. I put them in context. I'm doing a microservice that should return the attributes of an object. The microservice visualization has to be of the JSON format.
I've been doing some tests (none of them work for me). One, an Oracle Store Procedure to return an XML because I would like the sp code to be more dynamic. I do not know how to take that output variable and transform it into JSON within Oracle itself. Or if I can not, I would like to know if that output variable can be transformed into a JSON with Python
The other, which I do not like very much, is to make the "JSON" format within the SP and return a varchar of that content.
The second option where I generate the JSON, the package does this:
PROCEDURE get_attributes (p_element IN VARCHAR2, p_list OUT CLOB) AS
str_json_inicial VARCHAR2(100) := '{';
str_json_final VARCHAR2(100) := '"}';
str_json1 VARCHAR2(100) := '"role":"';
str_json2 VARCHAR2(100) := '","identification":"';
str_json3 VARCHAR2(100) := '","class":"';
str_json4 VARCHAR2(100) := '","country":"';
str_json5 VARCHAR2(100) := '","stateOrProvince":"';
str_json6 VARCHAR2(100) := '","city":"';
str_json7 VARCHAR2(100) := '","locality":"';
str_json8 VARCHAR2(100) := '","streetName":"';
str_json9 VARCHAR2(100) := '","streetNr":"';
str_json10 VARCHAR2(100) := '","x":"';
str_json11 VARCHAR2(100) := '","y":"';
respuesta CLOB;
BEGIN
select
TO_CLOB(str_json_inicial
|| str_json1
|| 'completarRol'
|| str_json2
|| id_equipo_gis
|| str_json3
|| 'completarClass'
|| str_json4
|| pais
|| str_json5
|| provincia
|| str_json6
|| partido
|| str_json7
|| localidad
|| str_json8
|| calle
|| str_json9
|| altura
|| str_json10
|| poste_x
|| str_json11
|| poste_y
|| str_json_final)
into p_list
from xxy_osf_equ_equipos
where id_equipo_gis = p_element;
EXCEPTION WHEN NO_DATA_FOUND then
BEGIN
p_list := to_clob('{}');
END;
WHEN OTHERS then
BEGIN
p_list := to_clob('{ERROR}');
END;
END get_attributes;
In both cases I have no idea how to make it work.
I'll give you some sample lines of Python of the first service I did, which works for me, but it's very harcode.
listOutput = cur.var(cx_Oracle.CURSOR)
l = cur.callproc('relationships.get_relationships', (elementId, listOutput))
cur = database.db.cursor()
result = []
for cur in listOutput.getvalue().fetchall():
result.append({
'identification': cur[0],
'elementRole': cur[1],
'direction': cur[2],})
return result
where listOutput is a cursor type variable of oracle and I'm placing the JSON tags.
Does anyone have any ideas, suggestions or recommendations?