解决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多线程编程(七):使用Condition实现复杂同步
Apr 05 Python
python文件操作相关知识点总结整理
Feb 22 Python
Python实现可获取网易页面所有文本信息的网易网络爬虫功能示例
Jan 15 Python
Python3.6安装及引入Requests库的实现方法
Jan 24 Python
python3学生名片管理v2.0版
Nov 29 Python
Python 中PyQt5 点击主窗口弹出另一个窗口的实现方法
Jul 04 Python
python并发编程多进程之守护进程原理解析
Aug 20 Python
Cython编译python为so 代码加密示例
Dec 23 Python
python等差数列求和公式前 100 项的和实例
Feb 25 Python
Python多进程multiprocessing、进程池用法实例分析
Mar 24 Python
python模板入门教程之flask Jinja
Apr 11 Python
Python matplotlib多个子图绘制整合
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
用Socket发送电子邮件(利用需要验证的SMTP服务器)
2006/10/09 PHP
php实现文件下载代码分享
2014/08/19 PHP
php利用反射实现插件机制的方法
2015/03/14 PHP
CentOS下搭建PHP环境与WordPress博客程序的全流程总结
2016/05/07 PHP
PHP入门教程之面向对象的特性分析(继承,多态,接口,抽象类,抽象方法等)
2016/09/11 PHP
CI框架常用函数封装实例
2016/11/21 PHP
PHP 应用容器化以及部署方法
2018/02/12 PHP
js 自制滚动条的小例子
2013/03/16 Javascript
JS中setTimeout()的用法详解
2013/04/14 Javascript
javascript break指定标签打破多层循环示例
2014/01/20 Javascript
Javascript中arguments对象详解
2014/10/22 Javascript
jQuery随机密码生成的方法
2015/03/09 Javascript
jquery+CSS3实现淘宝移动网页菜单效果
2015/08/31 Javascript
JavaScript中Textarea滚动条不能拖动的解决方法
2015/12/15 Javascript
快速掌握Node.js模块封装及使用
2016/03/21 Javascript
JS实现回到页面顶部动画效果的简单实例
2016/05/24 Javascript
RequireJS多页面应用实例分析
2016/06/29 Javascript
浅谈angular2 组件的生命周期钩子
2017/08/12 Javascript
微信小程序实现点击按钮修改文字大小功能【附demo源码下载】
2017/12/06 Javascript
web前端vue之vuex单独一文件使用方式实例详解
2018/01/11 Javascript
vue+element导航栏高亮显示的解决方式
2019/11/12 Javascript
基于JS正则表达式实现模板数据动态渲染(实现思路详解)
2020/03/07 Javascript
[00:31]DOTA2荣耀之路7:Miracle-空血无敌斩
2018/05/31 DOTA
Python的条件语句与运算符优先级详解
2015/10/13 Python
python操作 hbase 数据的方法
2016/12/18 Python
Python实现监控Nginx配置文件的不同并发送邮件报警功能示例
2019/02/26 Python
理解Django 中Call Stack机制的小Demo
2020/09/01 Python
html5触摸事件判断滑动方向的实现
2018/06/05 HTML / CSS
美国购买和销售礼品卡平台:Raise
2017/01/13 全球购物
八皇后问题,输出了所有情况,不过有些结果只是旋转了90度
2016/08/15 面试题
优秀党员事迹材料
2014/12/18 职场文书
航班延误投诉信
2015/07/02 职场文书
2016年秋季趣味运动会开幕词
2016/03/04 职场文书
导游词之安徽九华山
2019/09/18 职场文书
AJAX学习笔记
2021/05/18 Javascript
Python语言内置数据类型
2022/02/24 Python