1

少し前に 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 または文字列を予期しています

私が間違っているかもしれないことを誰かが知っていますか?

4

2 に答える 2

4

彼らは今python 3をサポートしているようです。unicodeの代わりにオブジェクトが必要な可能性がstrあり、おそらくユーザー/パスに関連するエラーメッセージには含まれていなかったにもかかわらず、そのエラーメッセージでpython 3用語を使用しています。

于 2010-05-25T16:38:22.760 に答える
1

エンコード設定を変更すると役立つ場合があります。

私の場合、これがあります:

- - コーディング: iso-8859-1 - -

あなたはおそらく持っています:

-- コーディング: utf-8 --

于 2011-01-27T15:16:23.307 に答える