2016-04-05 14 views
1

PostgreSQL 9.4.7 ve Python 2.7.6 kullanıyorum. Ben kullanıcı Tablo içinde satır güncellemek için bir plpython işlevi yazıyorum ve benim kod aşağıdaki gibidir - Ben postgres DB başarıyla bu işlevi oluşturmak mümkün duyuyorumBir satırı güncellemek için plpython işlevi çalışmıyor

CREATE FUNCTION update_user(myid int, mymail text, myname text) RETURNS text AS $$ 
    from plpy import spiexceptions 
    plan=plpy.prepare("UPDATE auth_user SET email=$2, username=$3 WHERE id = $1", 
    ["int"] ["text"]["text"]) 
    rv=plpy.execute(plan, [myid,myemail,myusername]) 
    return rv 
    $$ LANGUAGE plpythonu; 

ama üzerinde komuta altında yoluyla yürütmeye çalışıyorum ederken postgres shell -
update_user öğesini seçin (1, "xyz @ xyz.com @ sifymail.com", "updatedname");
aşağıdaki hatayı alıyorum -
HATA: Sütun "[email protected]" yok
SATIR 1: select update_user (1, "[email protected]", "cehennem");
Birisi bana nerede hata yaptığımı gösterebilir mi?

select update_user(1,'[email protected]@sifymail.com','updatedname'); 

Çift tırnak sütunları başvurmak için kullanılır: Her şeyden

cevap

1

Birincisi, postgresql dize hazır tek tırnak değil, çift olanları içine alınmalıdır.

İkincisi. Hazırlık fonksiyonunuzdaki argümanlar listesi doğru python listesi değildir. Şöyle görünmelidir:

plpy.prepare("UPDATE auth_user SET email=$2, username=$3 WHERE id = $1", 
      ["int", "text", "text"]) 
+0

Çok teşekkür ederim. İlk hata anında anladım ama son birkaç saatten beri ikinci biriyle mücadele ediyordum. Kodum önerilerinizle iyi çalışıyor. – Amar