鍍金池/ 問答/Python  數(shù)據(jù)庫/ 如何用Python將CROB插入到Oracle中時調(diào)用DMSMyCuff.HAS

如何用Python將CROB插入到Oracle中時調(diào)用DMSMyCuff.HASH?

How can this be done in one operation instead of two?

!/usr/local/bin/python3

import cx_Oracle

con = cx_Oracle.connect('scott/tiger@localhost:1512/ORCLPDB1', encoding="UTF-8")
cursor = con.cursor()
cursor.execute("CREATE TABLE t (id NUMBER, script CLOB, script_hash RAW(32))")

my_text = '$'2*10

statement = "INSERT INTO t (id, script) VALUES (:my_id, :my_clob)"
cursor.execute(statement, (1, my_text))

statement = """

UPDATE t 
   SET script_hash = DBMS_CRYPTO.HASH(script, 2) 
 WHERE id = :my_id"""

cursor.execute(statement, {'my_id': 1})

con.commit()
con.close()

This doesn't work:

statement = """
INSERT INTO t (id, script, script_hash)
VALUES (:my_id, :my_clob, DBMS_CRYPTO.HASH(:my_clob, 2))"""
cursor.execute(statement, (2, my_text, my_text))

cx_Oracle.DatabaseError: ORA-01465: invalid hex number

(Oracle 12.2 using Python and cx_Oracle 6.3)

回答
編輯回答
巴扎嘿

試試:

statement = """
INSERT INTO t(id, script, script_hash)
VALUES (:my_id, :my_clob, DBMS_CRYPTO.HASH(UTL_RAW.CAST_TO_RAW(:my_clob), 2))"""

參考[Making a sha1-hash of a row in Oracle
](https://stackoverflow.com/que...

2018年1月3日 06:46