python3 US7ASCII oracle乱码 写数据

数据库oracle11g,字符集US7ASCII,python3各种设置都试过了,始终无法解决乱码问题。oracle乱码的解决办法是使用自带的函数rawtohex或utl_raw.cast_to_varchar2,能从oracle中读取数据,但在数据库中插入的数据为英文或字符。

python3 cx_Oracle.connect连接数据库乱码 codec can‘t decode byte ordinal not in range(128)_jidushanzhu的博客-CSDN博客

【解决办法-比较繁琐,有一个需求就得写一个存储过程】

以python调用oracle存储过程的方式向oracle插入中文字符。

数据库存储过程

create or replace procedure eng2ch(
    inn in varchar2
) is
begin
    insert into pythontest(chinese,english) values(utl_raw.cast_to_varchar2(inn),'a');
    commit;
end eng2ch;

python程序

--------连接数据库(略)--------
a='发生的发撒打发zz法副食店'
b=encode('GBK')
c=b.hex.upper()
cursor.callproc('eng2ch',[c])
conn.commit()
cursor.close()
conn.close()

调用存储过程

declare
  a varchar(200);
  b varchar(200);
begin
  a:='XXXX';
  b:='index';
  eng2ch(a,b);
end;

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值