2017-07-07 66 views
0
# -*-coding: UTF-8 -*- 
import cx_Oracle 
conn = cx_Oracle.connect('test/[email protected]/test') 
cursor =conn.cursor() 
f = open('test001.txt','r',encoding='gbk') 
full_sql = f.read() 
sql_commands = full_sql.split(';') 

for sql_command in sql_commands: 
    cursor.execute(sql_command)}  

系统错误:UnicodeEncodeError:“ASCII”编解码器不能在353-357位置编码字符:在范围序数不(128)使用cx_Oracle处理.SQL脚本

+0

好像你不能真正阅读文件,但很难说这里有什么问题,除非你提供更多的信息,比如完整的堆栈跟踪。 你可以从test001.txt添加几行吗? –

+0

从测试中删除其中TERM_ID ='2017-04'和TERM_VERSION_ID ='2017-04-01 插入测试(ID,ID2,ID3,ID4,ID5,ID6,ID7,ID8) values('test', null,'2017-04-01-2017-04-30','2017-04-01-2017-04-30_V_4','1','2','3',4) insert into test(ID ,ID2,ID3,ID4,ID5,ID6,ID7,ID8) values('test',null,'2017-04-01-2017-04-30','2017-04-01-2017-04-30_V_4 ','7','8','9',10) –

+0

你安装了什么版本的cx_Oracle? –

回答

0

有与cx_Oracle一个问题6.0rc1在Windows操作系统错误的混合文本编码导致导入cx_Oracle以显示各种UnicodeEncodeError消息。像this这样的帖子有问题。 cx_Oracle的bug一直是fixed on GitHub,但是PyPi的一个版本尚未发布(很快就会发布)。如果您可以从GitHub安装cx_Oracle,您将看到实际的操作系统错误 - 然后您必须修复。

导致操作系统生成错误的问题的实际根源可能是您的路径中没有Oracle客户端库,而这些库与作为操作系统的32位或64位架构不同(32位或64位) Python,或者没有为您的Oracle客户端库版本提供正确的VS Redistributable。 Instant Client下载页面(32-bit64-bit)中列出了所需的VS Redistributables。