解决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的ORM框架中SQLAlchemy库的查询操作的教程
Apr 25 Python
python实现批量下载新浪博客的方法
Jun 15 Python
python 获取网页编码方式实现代码
Mar 11 Python
在Python中输入一个以空格为间隔的数组方法
Nov 13 Python
Python单元测试unittest的具体使用示例
Dec 17 Python
Python正则表达式匹配和提取IP地址
Jun 06 Python
Python Django搭建网站流程图解
Jun 13 Python
Selenium及python实现滚动操作多种方法
Jul 21 Python
python爬虫智能翻页批量下载文件的实例详解
Feb 02 Python
Pytorch - TORCH.NN.INIT 参数初始化的操作
Feb 27 Python
Python爬取科目四考试题库的方法实现
Mar 30 Python
Pandas||过滤缺失数据||pd.dropna()函数的用法说明
May 14 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
header()函数使用说明
2006/11/23 PHP
非常好用的两个PHP函数 serialize()和unserialize()
2012/02/04 PHP
php实现两表合并成新表并且有序排列的方法
2014/12/05 PHP
PHP中判断文件存在使用is_file还是file_exists?
2015/04/03 PHP
基于php实现随机合并数组并排序(原排序)
2015/11/26 PHP
Yii中CGridView实现批量删除的方法
2015/12/28 PHP
php封装的单文件(图片)上传类完整实例
2016/10/18 PHP
PHP中的多种加密技术及代码示例解析
2016/10/20 PHP
php发送http请求的常用方法分析
2016/11/08 PHP
基于CI(CodeIgniter)框架实现购物车功能的方法
2018/04/09 PHP
PHP实现断点续传乱序合并文件的方法
2018/09/06 PHP
javascript复制对象使用说明
2011/06/28 Javascript
DOM 中的事件处理介绍
2012/01/18 Javascript
JavaScript正则表达式之multiline属性的应用
2015/06/16 Javascript
AngularJS 表达式详解及实例代码
2016/09/14 Javascript
Vue.js动态添加、删除选题的实例代码
2016/09/30 Javascript
详解webpack 配合babel 将es6转成es5 超简单实例
2017/05/02 Javascript
Vue-cropper 图片裁剪的基本原理及思路讲解
2018/04/17 Javascript
vue移动端项目缓存问题实践记录
2018/10/29 Javascript
深入理解基于vue-cli的webpack打包优化实践及探索
2019/10/14 Javascript
Vue element-ui父组件控制子组件的表单校验操作
2020/07/17 Javascript
JS removeAttribute()方法实现删除元素的某个属性
2021/01/11 Javascript
[05:31]干嘛呢兄弟!DOTA2 TI9语音轮盘部分出处
2019/05/14 DOTA
一个基于flask的web应用诞生 组织结构调整(7)
2017/04/11 Python
keras 如何保存最佳的训练模型
2020/05/25 Python
跨域修改iframe页面内容详解
2019/10/31 HTML / CSS
台湾旅游网站:雄狮旅游网
2017/08/16 全球购物
草莓网中国:StrawberryNet中国
2020/08/17 全球购物
杭州龙健科技笔试题.net部分笔试题
2016/01/24 面试题
资产经营总监岗位职责范文
2013/12/01 职场文书
就业自我评价
2014/02/04 职场文书
物业保安岗位职责
2014/07/02 职场文书
交通安全责任书范本
2014/07/24 职场文书
毕业生求职自荐信(2016最新版)
2016/01/28 职场文书
2019学子的答谢词范本!
2019/07/05 职场文书
如何使用Python对NetCDF数据做空间相关分析
2021/04/21 Python