PyQt5 ve MySQL lag problemi

	def linkekle(self):

		linkziyaret = 0

		linkad = self.ui.linkadi.text()

		linkadres = self.ui.linkadresi.text()

		self.bugun = datetime.datetime.now()
		
		global tarih

		tarih = "%s-%s-%s" % (self.bugun.year, self.bugun.month, self.bugun.day)

		if linkad:

			veritabani.execute("SELECT * FROM linkler WHERE linkkullaniciadi='"+kullaniciadi+"'")

			linkadsorgula = veritabani.fetchall()

			for row in linkadsorgula:
				linkadis = row['linkadi']
				linkadress = row['linkadres']

				if linkad == linkadis:

					self.ui.sonuc3.setText("Bu Link Adı Sistemde\n Kayıtlı Bulunmaktadır ...!")

				else:

					if linkadres:

						if linkadres == linkadress:

							self.ui.sonuc3.setText("Bu Link Adresi Sistemde\n Kayıtlı Bulunmaktadır ...!")

						else:

							try:

								veritabani.execute(
									'INSERT INTO linkler(linkkullaniciadi,linkadi,linkadres,linkziyaretsayisi,linkkayittarihi) VALUES(%s,%s,%s,%s,%s) ',
									(kullaniciadi, linkad, linkadres, str(linkziyaret),
									 str(tarih)))

								db.commit()

								self.ui.sonuc3.setText("Link Sisteme\n Başarıyla Eklenmiştir ...!")

							except Exception as e:
								self.ui.sonuc3.setText("Link Sisteme \n Kayıt Olurken Hata Oluştu.\n Tekrar Linki Eklemeyi Deneyiniz ...!")

					else:

						self.ui.sonuc3.setText("Lütfen Link Adresi Giriniz ...!")
		else:

			self.ui.sonuc3.setText("Lütfen Link Adını Giriniz ...!")

arkadaşlar bu bölümde bir lag var ama bir türlü çözemedim bir tek ekliyor ikinciyi 2 kere üçüncüyü 3 kere böyle gidiyor. LÜTFEN YARDIM EDERMİSİNİZ

Oncelikle sana da merhaba

Hangi bolumde lag var? Senin tespit edemedigin problemi biz mi tespit edelim? Daha programin nasil calistigini, ne is yaptigini bile bilmiyoruz? “lag” 'tan kastin nedir?

Burasi teknik bir forum. burada insanlardan yardim isterken basliga lag var nasil cozerim yazip sadece kodlari ve resimleri atarsan insanlar sana yardim edemezler. Daha fazla bilgi paylasman lazim.

Bu arada eger yazarken buyuk harf kullanirsan insanlar bagiriyormussun gibi algilayabilir. ve bu da hic hos degil farkettiysen.

3 Beğeni

tamam kardaş ama amacım art niyetle yazmadım büyük harfle yazmayı tamam size özelden atayım o zaman kodu?

Ben kod istemedim ki. Kodu goruyorum zaten. Problem nerede cikti? Ne yapmak istiyorsun? Problemini cozmek icin ne yapabiliriz?

2 Beğeni

valla anlasam anlayamadım da şöyle birinciyi tek seferde kayıt ediyor ikinci seferde iki kez kayıt ediyor üçüncü seferde üç kez kayıt ediyor acaba nerede hata yapıyorum

1 Beğeni

Hatanız büyük ihtimalle veritabanından çektiğiniz verilerin üzerinde for döngüsü kurmanızdan dolayı. Mesela veritabanınızda 10 adet kayıt olduğunu düşünün. Ve siz ekleyeceğiniz yeni linkin veritabanında olup olmadığını kontrol etmek için admin1 isimli kullanıcıya kayıtlı tüm linkleri getirerek hepsini tek tek kontrol ediyorsunuz.

Şimdi düşünün admin1 kullanıcısına ait 10 adet kayıtlı link vardı. For döngüsü içerisinde 1. link ile yeni linki karşılaştırdınız. Eşit olmadıkları için hemen yeni link eklediniz. Ve işte bu noktada siz for döngüsünden çıkmadığınız için geri kalan 9 link ile yeni linki karşılaştırmaya devam ettiniz. Ne oldu? 9 link de eşit olmadığı için her seferinde aynı linki tekrar tekrar eklediniz.

Algoritmanız hatalı. Veritabanından çekmeniz gereken bilgiler eksik. Doğru sorgu şunun gibi bir şey olmalıydı

veritabani.execute("SELECT linkad FROM linkler WHERE linkkullaniciadi=? AND linkad=?", (kullaniciadi, linkad))

not: Parametleri nasıl kullandığıma dikkat edin. Veritabanı sorgularında parametre kullanırken ? kullanın.

Veritabanında admin1 isimli kullanıcıya ait linkad isimli bir link yok ise o zaman yeni linki eklersiniz for döngüsü kurulmasına gerek yok gördüğüm kadarıyla. Ve bir tavsiye daha vereyim. Kodunuzun davranışlarını anlamak zor oluyorsa debug kullanmak isteyebilirsiniz.

2 Beğeni