2011-04-19 18 views
6

Ben Ruby'den PostgreSQL ile konuşmak için pg gem kullanıyorum. res.ntuples == 0 kullanmaktan daha iyi bir sonuç olup olmadığını kontrol etmek için daha iyi bir yolu var mı?PGResult boş olup olmadığını kontrol etmek için daha kısa bir yol var mı?

conn = PGconn.connect config 

cmd = "select * from labels inner join labels_mail using(label_id) " + 
    "where labels_mail.mail_id = $1 and labels.name = $2" 

res = conn.exec(cmd, [mail_id, mailbox]) 

if res.ntuples == 0 # <=== is there a better way to check this? 
    cmd = "insert into labels_mail (mail_id, label_id) values ($1, $2)" 
    conn.exec(cmd, [mail_id, label_id(mailbox)]) 
end 
+0

kullanmak daha hızlı ve özlü veya neredeyse herhangi bir veritabanı. İşlenmemiş SQL veya veri kümeleri kullanmanıza veya ActiveRecord'a benzer bir tam gelişmiş modelleme ORM'si olarak hareket etmenize izin verir. –

+0

Teşekkürler. Ama performans nedeniyle metale yakın kalmak istiyorum. Asgari havai başlangıç ​​zamanı ile yazı yazıyorum. Aktif kayıt yaklaşımını denedim ve başlangıç ​​zamanı için çok yavaştı. – dan

cevap

5

ntuples, bir yazım hatası mu? Bu, ben * Postgres veya MySQL ile [Sequel] (http://sequel.rubyforge.org/) ORM mücevher kullanmanızı tavsiye derece *, Sadece bir ipucu olarak zero?== 0 daha

if res.num_tuples.zero? 
+0

ntuples benim için çalışır (pg 0.10.1). Teşekkürler. Sıfır kullanacağım? – dan

+0

'num_tuples' sadece ntuples' için bir takma addır. İkisi de aynı sonuçları veriyorlar. İyi ol 'maymun yama (!) –

İlgili konular