少し前に cx_oracle をダウンロードし、データを XML に変換するスクリプトを作成しました。OS を再インストールし、最新バージョンの 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()
それを実行すると、次のようになります。
トレースバック (最新の呼び出しが最後): ファイル "C:\NetBeansProjects\Python\src\db_temp.py"、48 行目、cursor.execute(sql) の TypeError: None または文字列を予期しています
私が間違っているかもしれないことを誰かが知っていますか?