解决python通过cx_Oracle模块连接Oracle乱码的问题


Posted in Python onOctober 18, 2018

用python连接Oracle是总是乱码,最有可能的是oracle客户端的字符编码设置不对。

本人是在进行数据插入的时候总是报关键字"From"不存在,打印插入的Sql在pl/sql中进行插入,没有问题。所以,后来从字符集编码上去考虑和解决问题。

编写的python脚本中需要加入:

import os
os.environ['NLS_LANG'] = 'SIMPLIFIED CHINESE_CHINA.UTF8'

这样可以保证select出来的中文显示没有问题。

要能够正常的insert和update中文,还需要指定python源文件的字符集密码和oracle一致。

# -*- coding: utf-8 -*-

示例:

# -*- coding: utf-8 -*- 
import os 
os.environ['NLS_LANG'] = 'SIMPLIFIED CHINESE_CHINA.UTF8' #或者os.environ['NLS_LANG'] = 'AMERICAN_AMERICA.AL32UTF8' 
import cx_Oracle 
db = cx_Oracle.connect(username/passwd@host:port/sevicename) 
cursor = db.cursor() 
#其他操作 
 
db.commit() 
db.close()

客户端的NLS_LANG设置及编码转换

在Oracle客户端向服务器端提交SQL语句时,Oracle客户端根据NLS_LANG和数据库字符集,对从应用程序接传送过来的字符串编码进行转换处理。如果NLS_LANG与数据库字符集相同,不作转换,否则要转换成数据库字符集并传送到服务器。服务器在接收到字符串编码之后,对于普通的CHAR或VARCHAR2类型,直接存储;对于NCHAR或NVARCHAR2类型,服务器端将其转换为国家字符集再存储。

以上这篇解决python通过cx_Oracle模块连接Oracle乱码的问题就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
Python内置的HTTP协议服务器SimpleHTTPServer使用指南
Mar 30 Python
Python常用库推荐
Dec 04 Python
Python pyinotify日志监控系统处理日志的方法
Mar 08 Python
详谈Python中列表list,元祖tuple和numpy中的array区别
Apr 18 Python
几行Python代码爬取3000+上市公司的信息
Jan 24 Python
通过代码实例了解Python sys模块
Sep 14 Python
python 实现压缩和解压缩的示例
Sep 22 Python
python批量修改交换机密码的示例
Sep 22 Python
基于PyTorch中view的用法说明
Mar 03 Python
python 实现的截屏工具
May 08 Python
PyTorch device与cuda.device用法
Apr 03 Python
Python获取字典中某个key的value
Apr 13 Python
解决python3捕获cx_oracle抛出的异常错误问题
Oct 18 #Python
python 自定义异常和异常捕捉的方法
Oct 18 #Python
详解Python发送email的三种方式
Oct 18 #Python
python try except 捕获所有异常的实例
Oct 18 #Python
对Python中Iterator和Iterable的区别详解
Oct 18 #Python
对python中的iter()函数与next()函数详解
Oct 18 #Python
对Python 3.2 迭代器的next函数实例讲解
Oct 18 #Python
You might like
全国FM电台频率大全 - 19 广东省
2020/03/11 无线电
php 信息采集程序代码
2009/03/17 PHP
解决PhpMyAdmin中导入2M以上大文件限制的方法分享
2014/06/06 PHP
详解PHP中websocket的使用方法
2016/09/15 PHP
浅析PHP反序列化中过滤函数使用不当导致的对象注入问题
2020/02/15 PHP
Jquey拖拽控件Draggable使用方法(asp.net环境)
2010/09/28 Javascript
整理一些JavaScript的IE和火狐的兼容性注意事项
2011/03/17 Javascript
异步JS框架的作用以及实现方法
2015/10/29 Javascript
浅谈JavaScript的自动垃圾收集机制
2016/12/15 Javascript
js控制文本框禁止输入特殊字符详解
2017/04/07 Javascript
javascript基础进阶_深入剖析执行环境及作用域链
2017/09/05 Javascript
Angular 封装并发布组件的方法示例
2018/04/19 Javascript
Vue iview-admin框架二级菜单改为三级菜单的方法
2018/07/03 Javascript
Vue.js实现表格渲染的方法
2018/09/07 Javascript
新手简单了解vue
2019/05/29 Javascript
微信小程序开发注意指南和优化实践(小结)
2019/06/21 Javascript
vue组件创建的三种方式小结
2020/02/03 Javascript
[00:13]天涯墨客二技能展示
2018/08/25 DOTA
python基于xml parse实现解析cdatasection数据
2014/09/30 Python
Python实现SMTP发送邮件详细教程
2021/03/02 Python
Python实现的rsa加密算法详解
2018/01/24 Python
Python实现针对json中某个关键字段进行排序操作示例
2018/12/25 Python
Django之PopUp的具体实现方法
2019/08/31 Python
kafka-python 获取topic lag值方式
2019/12/23 Python
tensorflow中tf.reduce_mean函数的使用
2020/04/19 Python
多个版本的python共存时使用pip的正确做法
2020/10/26 Python
关于python3.9安装wordcloud出错的问题及解决办法
2020/11/02 Python
利用html5 file api读取本地文件示例(如图片、PDF等)
2018/03/07 HTML / CSS
7 For All Mankind官网:美国加州洛杉矶的高级牛仔服装品牌
2018/12/20 全球购物
写求职信有什么意义
2014/02/17 职场文书
《理想的风筝》教学反思
2014/04/11 职场文书
还款承诺书范文
2014/05/20 职场文书
火箭队口号
2014/06/18 职场文书
美容院合作经营协议书
2014/10/10 职场文书
中学生打架检讨书
2014/10/13 职场文书
2015年春节标语口号
2014/12/09 职场文书