Corrige insercao de JSON grande no Oracle usando CLOB

This commit is contained in:
Frederico Castro
2025-12-13 17:22:50 -03:00
parent 93fb0d8a39
commit f1377634b2

View File

@@ -15,6 +15,8 @@ class RankingOracleRepository:
Insere ou atualiza um batch de consultores usando MERGE.
Retorna o número de registros processados.
"""
import cx_Oracle
if not consultores:
return 0
@@ -31,7 +33,7 @@ class RankingOracleRepository:
:componente_d AS COMPONENTE_D,
:ativo AS ATIVO,
:anos_atuacao AS ANOS_ATUACAO,
:json_detalhes AS JSON_DETALHES
TO_CLOB(:json_detalhes) AS JSON_DETALHES
FROM DUAL
) s
ON (t.ID_PESSOA = s.ID_PESSOA)
@@ -64,6 +66,8 @@ class RankingOracleRepository:
cursor = conn.cursor()
try:
for consultor in consultores:
json_str = json.dumps(consultor.get("detalhes", {}), ensure_ascii=False)
cursor.setinputsizes(json_detalhes=cx_Oracle.CLOB)
params = {
"id_pessoa": consultor["id_pessoa"],
"nome": consultor["nome"],
@@ -74,7 +78,7 @@ class RankingOracleRepository:
"componente_d": consultor["componente_d"],
"ativo": "S" if consultor["ativo"] else "N",
"anos_atuacao": consultor["anos_atuacao"],
"json_detalhes": json.dumps(consultor.get("detalhes", {}), ensure_ascii=False)
"json_detalhes": json_str
}
cursor.execute(merge_sql, params)