2012-12-27 12 views
5

tuple:psycopg2: Hata "IndexError aralık dışında tanımlama grubu endeksi" argümanlarla operatörü gibi '%' kullanarak Bu iyi çalışır

cc.execute("select * from books where name like '%oo%'") 

Ama ikinci argüman geçtiyseniz:

cursor.execute("select * from books where name like '%oo%' OFFSET % LIMIT %", (0,1)) 

Psycopg hataları :

Traceback (most recent call last): 
    File "<stdin>", line 1, in <module> 
IndexError: tuple index out of range 

Bu hata nasıl önlenir? Her şeyden

cevap

4

Öncelikle, % literal, aksi takdirde kütüphane yer tutucu olarak tüm % kullanmaya çalışacaktır eklemek için %% kullanmalıdır. İkincisi, değer eklemek istediğiniz %s belirtmek daha iyidir. adı '% gibi kitaplardan * select "(` cursor.execute:

cursor.execute("select * from books where name like '%%oo%%' OFFSET %s LIMIT %s", (0,1)) 
+0

piton 3'te size demet içinde başka bir virgül eklemek isteyeceksiniz sakının: gibi

Yani, kod bakmak gerekir % oo %% 'OFFSET% s SINIR% s ", (0,1,)), aksi halde" TypeError "ifadesini alırsınız: string formatlama sırasında dönüştürülen tüm argümanlar değil. –

İlgili konular