2012-12-04 3 views
6

Im usando python 2.7 e cx_Oracle (Windows x86 Installer (Oracle 10g, Python 2.7)) e 'm avendo un brutto momento per impostare questo semplice esempio muggito di lavorare: Messaggiocx_Oracle e pitone 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() 

errore :

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. 

Per ora, quello che ho fatto è stata:

1) installato il file binario cx_Oracle;

2) scaricato instantclient_10_2 dal sito Web di Oracle e esportato il percorso verso l'ambiente;

Qualcuno sa cosa mi manca?

Grazie per il vostro tempo a leggere questo.

+0

L'ultima volta che ho visto questo problema, c'è stata una mancata corrispondenza bitness. Prova il debugging con [procmon] (http://technet.microsoft.com/en-in/sysinternals/bb896645.aspx) – Abhijit

risposta

15

sono stato in grado di risolvere questo problema con le seguenti operazioni:

  1. Scarica instantclient-base-win32-10.2.0.5 da Oracle Website

  2. decompresso il nel mio c: \ con il nome oraclient

  3. Creata la struttura di directory C: \ oraclient \ network \ admin per aggiungere il TNSNAMES.ORA

  4. Aggiunto il TNS_ADMIN env var punta a C: \ oraclient \ network \ admin

  5. Aggiunto l'ORACLE_HOME env var punta a C: \ oraclient \

Dopo che ho usato il seguente codice:

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

Spero che aiuti qualcuno.

+11

usa 'cx_Oracle.connect ('theuser', 'thepass', cx_Oracle.makedsn ('host', porta, SID)) 'ed è possibile evitare i passaggi 3, 4 e 5. – Kashyap

+0

Grazie per aver indicato che =) –

+1

credo che sia ancora necessario avere c: \ oraclient (cfr passaggio 2) nel proprio os.environ ['PATH' ] variabile – comte