解决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实现同时给多个变量赋值的方法
Apr 30 Python
Python的Flask框架标配模板引擎Jinja2的使用教程
Jul 12 Python
python 容器总结整理
Apr 04 Python
python读取Excel实例详解
Aug 17 Python
python使用matplotlib库生成随机漫步图
Aug 27 Python
如何用Python破解wifi密码过程详解
Jul 12 Python
使用OpenCV实现仿射变换—缩放功能
Aug 29 Python
Python基于class()实现面向对象原理详解
Mar 26 Python
详解用Pytest+Allure生成漂亮的HTML图形化测试报告
Mar 31 Python
解决Django no such table: django_session的问题
Apr 07 Python
教你怎么用python实现字符串转日期
May 24 Python
python绘制云雨图raincloud plot
Aug 05 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中判断一个字符串包含另一个字符串的方法
2007/03/19 PHP
javascript读取RSS数据
2007/01/20 Javascript
情人节专属 纯js脚本1k大小的3D玫瑰效果
2012/02/11 Javascript
js比较和逻辑运算符的介绍
2013/03/10 Javascript
jquery设置text的值示例(设置文本框 DIV 表单值)
2014/01/06 Javascript
IE浏览器中图片onload事件无效的解决方法
2014/04/29 Javascript
JS中使用变量保存arguments对象的方法
2016/06/03 Javascript
JavaScript的this关键字的理解
2016/06/18 Javascript
解析Vue 2.5的Diff算法
2017/11/28 Javascript
从零开始实现Vue简单的Toast插件
2018/12/03 Javascript
Nautil 中使用双向数据绑定的实现
2019/10/02 Javascript
javascript读取本地文件和目录方法详解
2020/08/06 Javascript
sublime python3 输入换行不结束的方法
2018/04/19 Python
一行代码让 Python 的运行速度提高100倍
2018/10/08 Python
对python条件表达式的四种实现方法小结
2019/01/30 Python
详解Python的数据库操作(pymysql)
2019/04/04 Python
Python实现的多进程拷贝文件并显示百分比功能示例
2019/04/09 Python
Python3+Appium实现多台移动设备操作的方法
2019/07/05 Python
python 返回一个列表中第二大的数方法
2019/07/09 Python
pytorch 实现张量tensor,图片,CPU,GPU,数组等的转换
2020/01/13 Python
tensorflow指定CPU与GPU运算的方法实现
2020/04/21 Python
使用Pycharm在运行过程中,查看每个变量的操作(show variables)
2020/06/08 Python
Python descriptor(描述符)的实现
2020/11/15 Python
详解Django自定义图片和文件上传路径(upload_to)的2种方式
2020/12/01 Python
.NET初级开发工程师面试题(包括Javascript)
2012/08/22 面试题
数学系毕业生的自我评价
2014/01/10 职场文书
简单的辞职信范文
2014/01/18 职场文书
学雷锋的心得体会
2014/09/04 职场文书
2014年售后服务工作总结
2014/11/18 职场文书
个人优缺点总结
2015/02/28 职场文书
学习雷锋精神倡议书
2015/04/27 职场文书
2015年美容师个人工作总结
2015/10/14 职场文书
幼儿园心得体会范文
2016/01/21 职场文书
读《庄子》有感:美而不自知
2019/11/06 职场文书
Python类方法总结讲解
2021/07/26 Python
CSS中float高度塌陷问题的四种解决方案
2022/04/18 HTML / CSS