我遇到类似以下错误:
cx_Oracle.NotSupportedError: Python value cannot be
converted to a database value
原因应该是我要插入到de DB中的数据中。
我正在打印发送到Oracle 12数据库的数据,这看起来很正常。
我什至还腌制了导致错误的insert_batch数据,以及何时
我加载了腌制的数据,并尝试将其持久化到数据库中,
sql_batch_insert_encoded_traza
完美运行。
会发生什么?
CREATE TABLE LOG_TRACES
(
ID_EVENTO_LOG NUMBER NOT NULL,
FECHA TIMESTAMP(6) NOT NULL,
NIVEL RAW(1) NOT NULL,
SERVICIO RAW(2) NOT NULL,
ID_REGEX RAW(2) NOT NULL,
DIRECCION_IP RAW(4),
ID_TRACE_SLEUTH VARCHAR2(20 CHAR),
ID_PETICION NUMBER,
OPERACION RAW(1),
CLASE RAW(2),
COMPONENTE RAW(2),
CONSTRAINT unique_TRAZAS_ID UNIQUE (ID_EVENTO_LOG)
)
def sql_batch_insert_encoded_traza(cursor, dto_batch):
if DEBUG: print(dto_batch)
insert_query='''INSERT INTO LOG_TRACES (
ID_EVENTO_LOG, FECHA, NIVEL,
SERVICIO, ID_REGEX, DIRECCION_IP,
ID_TRACE_SLEUTH, ID_PETICION, OPERACION,
CLASE, COMPONENTE)
VALUES (
:ID_EVENTO_LOG,
:FECHA,
:NIVEL,
:SERVICIO,
:ID_REGEX,
:DIRECCION_IP,
:ID_TRACE_SLEUTH,
:ID_PETICION,
:OPERACION,
:CLASE,
:COMPONENTE
)'''
cursor.prepare(insert_query)
cursor.executemany(None, dto_batch)
conn = cx_Oracle.connect(username, passwd, dsn_tns)
cursor = conn.cursor()
for ...:
...
try:
sql_batch_insert_encoded_traza(cursor, insert_batch)
except:
print("insert_batch at fault: ", insert_batch)
conn.commit()
cursor.close()
conn.close()
conn=None