首页 > 数据库技术 > 详细

python生成exe后,在某些机子上用instantclient操作oracle,sql带中文不识别

时间:2019-09-06 18:01:05      阅读:124      评论:0      收藏:0      [点我收藏+]

前提:

1.不是所有机子都会中文出问题

2.python封装exe 使用的  pyinstaller

3.开发环境执行sql及生成的exe没问题

环境信息:

python3.7

cx_Oracle 7.1.3

Windows7

本机用py文件执行和exe执行均无问题

拷贝到其他机子上,由于没有oracle环境,需要用到instantclient,我的cx_Oracle版本是7.1.3,所以instantclient版本用了18 ,这个不重要,按照官网指导配就行了,

第一次执行提示unicodedecode error  ,原因是生成exe之后,虽然标本写的coding:utf8 但是还是会以当前主机系统编码为主,所以在sql语句的字符串后面要编码gbk

例如:sqlCode = """ select * from 中文表名 """.encode("gbk")

这下就不报编码问题了

接下来oracle会报错

ORA-00911: invalid character

不识别中文

解决方案:加环境变量

import os
os.environ[‘NLS_LANG‘] = "SIMPLIFIED CHINESE_CHINA.ZHS16GBK"
 
解决!!

 

python生成exe后,在某些机子上用instantclient操作oracle,sql带中文不识别

原文:https://www.cnblogs.com/ypx-blackice/p/11476998.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!