2016-04-11 3 views
1

Ich benutze Python2.7 durch Spyder (Anaconda2 (64-Bit)).Warum kann ich keine Antwort von der Abfrage einer Zeichenfolge mit cursor.execute mit psycopg2 erhalten?

I etablieren Verbindung mit einer PostgreSQL-Datenbank:

conn = psycopg2.connect(dbname='dbname',host='host',port='5433', user='postgres', password='password') 

Wenn ich versuche, die Datenbank abzufragen es mit Zahlen gut funktioniert:

cursor.execute('SELECT platform.platform_id,platform.platform_name FROM instrumentation.platform WHERE platform_id=15;') 
cursor.fetchone() 

mir die Antwort zu geben: (15L, ‚Station_LaMola ') was ich erwartet habe.

Allerdings, wenn ich versuche, nach dem Namen zu fragen suchen, meldet es mir die bekannten Fehler:

value = 'Station_LaMola' 
cursor.execute("SELECT platform.platform_name FROM instrumentation.platform WHERE platform_name = '%s'",(value,)) 

UnicodeDecodeError: 'ascii' codec can't decode byte 0xc3 in position 9: ordinal not in range(128) 

Offenbar dies der richtige Weg ist, um die Abfrage auszuführen. Was mache ich falsch?

Vielen Dank im Voraus

Antwort

1

definieren es als Unicode-String und entfernen Sie die Anführungszeichen um den Platzhalter:

value = u'Station_LaMola' 
cursor.execute(""" 
    SELECT 
     platform.platform_name 
    FROM 
     instrumentation.platform 
    WHERE 
     platform_name = %s""", (value,)) 
+0

Great !! Es hat perfekt funktioniert. Danke noch einmal. –

Verwandte Themen