我有一个包含 16 位十六进制数字列表的文本文件(例如“61C7393AA9B3474DB081C7B7CCE1C545”),我需要使用 cx_Oracle 将它们插入一个 Oracle RAW 列。我试过这个:
sql = "INSERT INTO GUIDS VALUES (HEXTORAW(:1))"
ids = [l.strip() for l in guidfile.readlines()]
cursor.bindarraysize = len(ids)
cursor.setinputsizes(cx_Oracle.BINARY)
cursor.executemany(sql, ids)
但它因 cx_Oracle.DatabaseError: ORA-01036: 非法变量名称/编号而失败。在调用 executemany 之前,我是否需要在 python 中将值转换为二进制?如果是这样怎么办?注意,相同的 sql 适用于 cursor.execute 和单个值,它仅适用于我遇到问题的列表。