PDA

Tam Sürümünü Görmek İçin : Mysql Out of memory hatası


mrcplus
15/02/2007, 14:35
Python ile web üzerinde çalışmaya başladım. Süresi dolmuş alan adları arasında arama yapılabilecek bir sistem geliştiriyorum. Yanlız veritabanı konusunda bir sorunla karşılaştım.

Kullanılan veritabanı mysql. Tek tablo kullanılıyor ve tabloda yaklaşık olarak bir milyonu aşkın kayıt var. Aşağıdaki kodlarda out of memory hatası alıyorum. Bu sorunu nasıl giderebilirim?

Bu sorunu giderdiğimi farzedersek ilerki aşamalardaki sorgulamalarda sizce hız vs konularında tek tablo ile devam etmek mantıklımı?


#!/usr/bin/python

import cgi,cgitb
import MySQLdb

print "Content-Type: text/html\n"
print

cgitb.enable()

def main():
baglan=MySQLdb.Connection(host="sunucu", user="kullanıcı", passwd="parola", db="veritabanı")
islem=baglan.cursor(MySQLdb.cursors.DictCursor)
islem.execute("Select a_ID from ed")
islem.close()

if __name__=="__main__":
main()


Teşekkürler, iyi çalışmalar.


mrcplus
15/02/2007, 14:56
Hatayı dünden beri çözmeye çalışıyordum. Son olarak foruma yazayım bari dedim bugün. Ardından cevabı buldum :)


islem=baglan.cursor(MySQLdb.cursors.DictCursor)

yerine

islem=baglan.cursor()


kullanılınca bir sorun kalmadı. Galiba ilk olarak kullandığım kod, tüm kayıtlar üzerinde bir işlem gerçekleştirdiği için hata vermesine sebep oluyordu.

hasanyasin
23/02/2007, 22:22
Select sorgunuzun sonucunu ne yapacaksınız bilmiyorum; ama anladığım kadarıyla şöyle bir yaklaşım sorunumuz var: Herhangi bir veritabanı sunucusundan sunucudaki tüm veriyi alıp bunu scriptiniz içinde işlemek yerine veritabanından sadece ihtiyacımız olan veriyi seçmemiz gerekiyor, adı üstünde select sorgusu:)