2016-04-11 19 views
1

Python2.7 kullanarak Spyder (Anaconda2 (64-bit)) kullanıyorum.Neden psycopg2 kullanarak cursor.execute kullanarak bir dize sorgulama yanıt alamıyorum?

kullanıyorum bir PostgreSQL veritabanı ile bağlantı kurmak:

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

Ben sayılarla çalışıyor veritabanını sorgulamak denerseniz:

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

bana cevabı veren: (15L, 'Station_LaMola ') beklediğim şey bu. Ben isim arayan sorgulamak çalıştığınızda

Ancak, bana iyi bilinen hata bildirir:

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) 

Görünüşe Bu sorguyu gerçekleştirmek için uygun bir yoldur. Neyi yanlış yapıyorum? peşin

cevap

1

yılında

Teşekkür unicode dize olarak tanımlamak ve yer tutucu etrafında tırnak kaldırın: Büyük

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

!! Mükemmel çalıştı. Tekrar teşekkürler. –

İlgili konular