前段时间我已经下载了cx_oracle并编写了一个脚本来将数据转换为XML。我不得不重新安装我的操作系统并抓住最新版本的cx_Oracle(5.0.3),突然间我的代码被破坏了。
首先,cx_Oracle.connect需要unicode而不是字符串作为用户名和密码,这很容易修复。但是现在它一直在使用cursor.execute失败并且告诉我我的字符串不是字符串,即使type()告诉我它是一个字符串。
这是我在很久以前初次使用的测试脚本,在我的旧版本上工作正常,但现在无法在cx_Oracle上运行。
import cx_Oracle
ip = 'url.to.oracle'
port = 1521
SID = 'mysid'
dsn_tns = cx_Oracle.makedsn(ip, port, SID)
connection = cx_Oracle.connect(u'name', u'pass', dsn_tns)
cursor = connection.cursor()
cursor.arraysize = 50
sql = "select isbn, title_code from core_isbn where rownum<=20"
print type(sql)
cursor.execute(sql)
for isbn, title_code in cursor.fetchall():
print "Values from DB:", isbn, title_code
cursor.close()
connection.close()
当我跑步时,我得到:
Traceback(最近一次调用最后一次): 文件“C:\ NetBeansProjects \ Python \ src \ db_temp.py”,第48行,in cursor.execute(SQL) TypeError:期望无或字符串
有谁知道我可能做错了什么?
答案 0 :(得分:4)
我看到他们现在支持python 3。可能是他们想要一个unicode
对象而不是str
,并且他们在该错误消息中使用了python 3术语,即使他们可能没有在与用户/传递相关的错误消息中
答案 1 :(得分:1)
也许更改编码设置会有所帮助。
我的情况就是这样:
- - 编码:iso-8859-1 - -
你可能有:
- 编码:utf-8 -