解决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判断字符串是否纯数字的方法
Nov 19 Python
python3操作mysql数据库的方法
Jun 23 Python
python实现SOM算法
Feb 23 Python
人脸识别经典算法一 特征脸方法(Eigenface)
Mar 13 Python
python flask中静态文件的管理方法
Mar 20 Python
对python opencv 添加文字 cv2.putText 的各参数介绍
Dec 05 Python
Python流程控制 if else实现解析
Sep 02 Python
Django框架 Pagination分页实现代码实例
Sep 04 Python
python中读入二维csv格式的表格方法详解(以元组/列表形式表示)
Apr 24 Python
python实现俄罗斯方块小游戏
Apr 24 Python
Python SMTP发送电子邮件的示例
Sep 23 Python
C++和python实现阿姆斯特朗数字查找实例代码
Dec 07 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
深入分析php之面向对象
2013/05/15 PHP
关于查看MSSQL 数据库 用户每个表 占用的空间大小
2013/06/21 PHP
完整删除ecshop中获取店铺信息的API
2014/12/24 PHP
分享微信扫码支付开发遇到问题及解决方案-附Ecshop微信支付插件
2015/08/23 PHP
PHP网站建设的流程与步骤分享
2015/09/25 PHP
php运行报错Call to undefined function curl_init()的最新解决方法
2016/11/20 PHP
PHP中file_put_contents追加和换行的实现方法
2017/04/01 PHP
Javascript select下拉框操作常用方法
2009/11/09 Javascript
一些mootools的学习资源
2010/02/07 Javascript
基于socket.io和node.js搭建即时通信系统
2014/07/30 Javascript
JavaScript整除运算函数ceil和floor的区别分析
2015/04/14 Javascript
JS实现文档加载完成后执行代码
2015/07/09 Javascript
详解javascript事件冒泡
2016/01/09 Javascript
在JSP中如何实现MD5加密的方法
2016/11/02 Javascript
Windows系统下安装Node.js的步骤图文详解
2016/11/15 Javascript
Node.js开发第三方微信公众平台
2017/06/05 Javascript
JS监控关闭浏览器操作的实例详解
2017/09/12 Javascript
浅谈es6中export和export default的作用及区别
2018/02/07 Javascript
js控制随机数生成概率代码实例
2019/03/21 Javascript
WEB前端性能优化的7大手段详解
2020/02/04 Javascript
Vue 3自定义指令开发的相关总结
2021/01/29 Vue.js
python简单实现计算过期时间的方法
2015/06/09 Python
Python数据可视化正态分布简单分析及实现代码
2017/12/04 Python
解决Python网页爬虫之中文乱码问题
2018/05/11 Python
使用pyecharts生成Echarts网页的实例
2019/08/12 Python
django的403/404/500错误自定义页面的配置方式
2020/05/21 Python
外包公司软件测试工程师
2014/11/01 面试题
运动会广播稿30字
2014/01/21 职场文书
高中毕业生的个人自我评价
2014/02/21 职场文书
颁奖晚会主持词
2014/03/25 职场文书
放射科岗位职责
2015/02/14 职场文书
超市店长竞聘书
2015/09/15 职场文书
优秀毕业生主要事迹材料
2015/11/04 职场文书
MySQL表的增删改查基础教程
2021/04/07 MySQL
Spring Boot项目传参校验的最佳实践指南
2022/04/05 Java/Android
根德5570型九灯四波段立体声收音机是电子管收音机的楷模 ? 再论5570
2022/04/05 无线电