2010-12-03 6 views
0

Bin mit Debian 5, Python 2.5 mit CX_Oracle Unicode-Version installiert. Ich versuche, mit dem unter Skript zu verbinden seine aberVerbinden mit Oracle-Datenbank mit Cx_Oracle auf Python

>>> connection = cx_Oracle.connect('hr/[email protected]_xe') 
Traceback (most recent call last): 
    File "<stdin>", line 1, in <module> 
TypeError: argument 1 must be unicode, not str 

Ich denke, scheitern, weil die installierte cx_Oracle eine Unicode-Version ist, seine mich zu fragen, die Unicode als ersten Parameter angeben. aber, Es nimmt keine Fäden und ich weiß nicht, was ich sonst liefern könnte?

+1

versuchen Sie 'cx_Oracle.connect (u'hr/XXXXX @ local_xe ')'? – Sathya

+0

@Sathya: vielen Dank. Das hat mein Problem gelöst, stört es dich aber, mir zu sagen, warum wir ein Du vor die Schnur setzen müssen? was bedeutet das? –

+0

@Mo J. Ich habe eine Antwort geschrieben, die erklärt, warum sie benötigt wird. – Sathya

Antwort

-1

die Lösung war die folgende

cx_Oracle.connect(u'hr/[email protected]_xe') 

ein u vor der Zeichenfolge zu platzieren. Nicht sicher warum, aber das hat das Problem für mich gelöst.

4

Sie sollten versuchen,

cx_Oracle.connect(u'hr/[email protected]_xe') 

Da Sie die Unicode-Version von cx_Oracle haben, erwartet er die Verbindungszeichenfolge ein Unicode sring (argument 1 must be unicode, not str) sein

Putting a u'' infront einer Zeichenfolge konvertiert es in Unicode, und daher wird der Fehler nicht ausgelöst.