需求: 由于oracle news_info新闻表 正文content字段值太长,超出varchar字段长度,因此修改数据类型为CLOB类型, 通过cx_Oracle插入数据到oracle中
操作实例如下:
def insert_data2oracle():
try:
oracle_address_info='127.0.0.1|1521|scott|tiger|ORCL'
ip, port, user, pwd, sid = oracle_address_info.split('|')
url = user + '/' + pwd + '@' + ip + ':' + port + '/' + sid
print('oracle uri:' + url)
conn = cx_Oracle.connect(url)
cursor = conn.cursor()
sql = 'insert into news_info(ID,CONTENT,CREATE_BY,CREATE_TIME, DATA_VALIDITY) VALUES(:ID,:CONTENT,:CREATE_BY,:CREATE_TIME, :DATA_VALIDITY)'
# 申明一个CLOB类型对象
clob_data = cursor.var(cx_Oracle.DB_TYPE_CLOB)
CONTENT = '这是一个长文本'
# 将content值存入clob对象中
clob_data.setvalue(0, CONTENT)
# print(clob_data)
data = {'ID': '123', 'CONTENT': clob_data, 'CREATE_BY': 'admin',
'CREATE_TIME': datetime.now(),
'DATA_VALIDITY': 1}
print(data)
cursor.prepare(sql)
cursor.execute(None, data)
conn.commit()
expect Exception as e:
print('exception message is %s' % e)
finally:
cursor.close()
conn.close()
参考:
Python通过cx_Oracle插入clob类型数据
cx_Oracle官网 Streaming LOBs (Write)