2010-05-25 3 views
1

J'ai téléchargé cx_oracle il y a quelques temps et j'ai écrit un script pour convertir des données en XML. J'ai dû reisntall mon OS et ai attrapé la dernière version de cx_Oracle (5.0.3) et tout à coup mon code est cassé.pourquoi cx_oracle n'exécute() pas comme ma chaîne maintenant?

La première chose était que cx_Oracle.connect voulait unicode plutôt une chaîne pour le nom d'utilisateur et mot de passe, qui était très facile à corriger. Mais maintenant, il continue à échouer sur cursor.execute et me dit que ma chaîne n'est pas une chaîne même lorsque type() me dit que c'est une chaîne.

Voici un script de test que j'ai utilisé initialement il y a longtemps et qui a bien fonctionné sur mon ancienne version mais qui ne fonctionne pas sur cx_Oracle maintenant.

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() 

Quand je lance que je reçois:

retraçage (appel le plus récent en dernier): fichier "C: \ NetBeansProjects \ Python \ src \ db_temp.py", ligne 48, à curseur .execute (sql) TypeError: attendez None ou une chaîne

Est-ce que quelqu'un sait ce que je peux faire de mal?

Répondre

4

Je vois qu'ils supportent python 3 maintenant. Il se peut qu'ils veuillent un objet unicode au lieu de str, et ils utilisent la terminologie python 3 dans ce message d'erreur, même s'ils ne l'ont probablement pas fait dans les messages d'erreur relatifs à user/pass.

1

Peut-être que la modification de vos paramètres d'encodage vous aidera.

J'AI dans mon cas:

-- codage: iso-8859-1 - -

Vous avez probablement:

- codage: utf-8 -

Questions connexes