解决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 相关文章推荐
Python3使用requests登录人人影视网站的方法
May 11 Python
详解python使用递归、尾递归、循环三种方式实现斐波那契数列
Jan 16 Python
Python中enumerate()函数编写更Pythonic的循环
Mar 06 Python
pandas 数据实现行间计算的方法
Jun 08 Python
使用NumPy和pandas对CSV文件进行写操作的实例
Jun 14 Python
python装饰器简介---这一篇也许就够了(推荐)
Apr 01 Python
python实现简易学生信息管理系统
Apr 05 Python
tensorflow将图片保存为tfrecord和tfrecord的读取方式
Feb 17 Python
将数据集制作成VOC数据集格式的实例
Feb 17 Python
Python3如何实现Win10桌面自动切换
Aug 11 Python
selenium判断元素是否存在的两种方法小结
Dec 07 Python
Python基于爬虫实现全网搜索并下载音乐
Feb 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
如何在PHP中使用Oracle数据库(1)
2006/10/09 PHP
PHP扩展Swoole实现实时异步任务队列示例
2019/04/13 PHP
PHP 使用位运算实现四则运算的代码
2021/03/09 PHP
prototype Element学习笔记(Element篇三)
2008/10/26 Javascript
jquery 单击li防止重复加载的实现代码
2010/12/24 Javascript
基于jquery的无刷新分页技术
2011/06/11 Javascript
不用构造函数(Constructor)new关键字也能实现JavaScript的面向对象
2013/01/11 Javascript
jquery控制display属性为none或block
2014/03/31 Javascript
Nodejs实现的一个简单udp广播服务器、客户端
2014/09/25 NodeJs
jquery制作漂亮的弹出层提示消息特效
2014/12/23 Javascript
jquery实现像栅栏一样左右滑出式二级菜单效果代码
2015/08/24 Javascript
学习javascript面向对象 掌握创建对象的9种方式
2016/01/04 Javascript
JavaScript实现移动端滑动选择日期功能
2016/06/21 Javascript
Vue.js实战之使用Vuex + axios发送请求详解
2017/04/04 Javascript
JavaScript实现计数器基础方法
2017/10/10 Javascript
JS实现为动态添加的元素增加事件功能示例【基于事件委托】
2018/03/21 Javascript
Layui表格行工具事件与数据回填方法
2019/09/13 Javascript
WEB前端性能优化的7大手段详解
2020/02/04 Javascript
详解Vue2的diff算法
2021/01/06 Vue.js
[02:34]DOTA2英雄基础教程 幽鬼
2014/01/02 DOTA
python简单实现基数排序算法
2015/05/16 Python
python实现在控制台输入密码不显示的方法
2015/07/02 Python
详解Python中最难理解的点-装饰器
2017/04/03 Python
Python简单网络编程示例【客户端与服务端】
2017/05/26 Python
Python编程pygame模块实现移动的小车示例代码
2018/01/03 Python
django js实现部分页面刷新的示例代码
2018/05/28 Python
Python实现字典(dict)的迭代操作示例
2018/06/05 Python
python实现对象列表根据某个属性排序的方法详解
2019/06/11 Python
PyCharm Community安装与配置的详细教程
2020/11/24 Python
CSS3改变浏览器滚动条样式
2019/01/04 HTML / CSS
Windows和Linux动态库应用异同
2016/04/17 面试题
文明之星事迹材料
2014/05/09 职场文书
销售团队激励口号
2014/06/06 职场文书
农村党员学习党的群众路线教育实践活动心得体会
2014/11/04 职场文书
离婚财产分割协议书
2015/08/11 职场文书
Python编写nmap扫描工具
2021/07/21 Python