代码示例如下:
import cx_Oracle
db=cx_Oracle.connect('system','oracle','192.168.2.42:1521/dave')
print db.version
返回的错误是
Traceback (most recent call last):
File "<stdin>", line 3, in <module> UnicodeDecodeError: 'utf-8' codec can't decode bytes in position 82-83: invalid continuation byte
答案 0 :(得分:0)
升级cx_Oracle:
python -m pip install cx_Oracle --upgrade
在Version 6.0 rc 2中修复了在某些Windows环境中导致此错误的问题。如果这不能解决问题,请在https://github.com/oracle/python-cx_Oracle/issues处记录问题。
答案 1 :(得分:0)
问题不在于cx_Oracle本身,而在于系统环境。我假设系统是基于Windows的,因为它是最可能的情况。 是的,返回的错误根本不是描述性的,并且发生在第一行:
import cx_Oracle
这里发生的是python尝试导入cx_Oracle的二进制库(这是dll),由于某种原因它无法这样做,然后windows返回在国家本地代码页中编码的本机错误描述(cp1251 for Russian in我的情况)而不是python期望的utf8。 看待这个原因的方法之一:
try:
import cx_Oracle
except Exception as ex:
print(ex.object.decode('1251'))
btw。:cx_Oracle 6.0b2没有解决问题,我认为不应该