2012-12-04 19 views
6

Im en utilisant Python 2.7 et cx_Oracle (Windows x86 Installer (Oracle 10g, Python 2.7)) et « m ayant un mauvais moment pour définir cet exemple simple ci-dessous pour travailler:cx_Oracle et python 2.7

import cx_Oracle 
connection = cx_Oracle.connect('user/[email protected]:port') 
cursor = connection.cursor() 
cursor.execute('select sysdate from dual') 

for row in cursor: 
    print row 
connection.close() 

Message d'erreur :

Traceback (most recent call last): 
    File "C:\ORACON.py", line 1, in <module> 
    import cx_Oracle 
ImportError: DLL load failed: The specified module could not be found. 

Pour l'instant, ce que je l'ai fait était:

1) installé le binaire cx_Oracle;

2) téléchargé instantclient_10_2 à partir du site Web d'Oracle et exporté le chemin vers l'environnement;

Quelqu'un sait ce que je manque?

Merci d'avoir pris le temps de lire ceci.

+0

La dernière fois que je l'ai vu cette question, il y avait un décalage dans bitness. Essayez le débogage avec [procmon] (http://technet.microsoft.com/en-in/sysinternals/bb896645.aspx) – Abhijit

Répondre

15

j'ai pu résoudre ce problème avec les étapes suivantes:

  1. Télécharger instantclient-basic-win32-10.2.0.5 de Oracle Website

  2. décompressé le dans mon c: \ avec le nom oraclient

  3. Créé la structure de répertoire C: \ oraclient \ network \ admin pour ajouter le TNSNAMES.ORA

  4. Ajouté env TNS_ADMIN var pointant vers C: \ oraclient \ réseau \ admin

  5. Ajouté le pointage var env ORACLE_HOME à C: \ oraclient \

Après que j'ai utilisé le code suivant:

import cx_Oracle 

con = cx_Oracle.connect('theuser', 'thepass', 'your DB alias on your TNSNAMES.ORA file ') 
cur = con.cursor() 
if cur.execute('select * from dual'): 
    print "finally, it works!!!" 
else: 
    print "facepalm" 
con.close() 

J'espère que ça aide quelqu'un.

+11

utilisez 'cx_Oracle.connect ('theuser', 'thepass', cx_Oracle.makedsn ('hôte', port, SID)) 'et vous pouvez éviter les étapes 3, 4 et 5. – Kashyap

+0

Merci d'avoir indiqué que =) –

+1

Je suppose que vous devez toujours avoir c: \ oraclient (cf étape 2) dans votre os.environ ['PATH' ] variable – comte