Veriler birer tuple gibi gözüküyor. Print sonucunu liste isminde bir değişkene kaydettim ve liste[0][0][0] şeklinde tuple ın içindeki linke erişebiliyorum. Aklıma gelen tek yöntem bu oldu. Başka yöntemi olan varsa yazsın lütfen çünkü pek içim ısınmadı bu yönteme (her ne kadar çalışsa da).
linkler = []
sorgu = "select urunLink from kayıt"
islem.execute(sorgu)
veriler = islem.fetchall()
linkler.append(veriler)
for li in linkler[0]:
print(li[0])
Öncelikle cursor denen objeden bahsedeyim sana. Elimde site_adi, site_linki, site_id şeklinde sütunların bulunduğu kayıt diye bir tablom olsun. select * from tablo dediğim zaman tüm sütunları çekiyorum, değil mi? fetchone() dersem bana ilk [(site_adi,site_linki,site_id)] satırını getirdi. fetchall() dersem de her bir satırı bir tuple içine atıp bunu da listeyle sarmalayarak gönderdi. Eğer bunun yerine senin de yaptığın gibi select site_linki from tablo dersem tek bir sütuna ait elemanları yine tuple içine alıp liste ile sararak döndürdü. [(site_linki1,),(site_linki2,)…]. Senin burada yapmak istediğin bunun üzerinde yürümek.
for veri in veriler:
Şeklinde yürümeye başladığım anda bana birer objeli tuple dönecek. Ben tuple değil, içindekini istiyorum. O yüzden veri[0]'ı almam lazım (tuple tek elemanlı olduğu için sıfırıncı elemanı almam gerekiyor) doğal olarak.
Icinin isinmamasi cok mantikli, cunku o 0’lar neyi temsil ediyor hic bir fikrin yok.
Ayni sorun baska butun yontemlerde de karsimiza cikacak, cunku sorunun kaynagi datanin ne oldugunu, neyi temsil ettigini (semasini, type’ini) bilmememiz. Elimizdeki bilgiyle daha iyi bir cevap vermemize imkan yok.
0 ları liste (ve tuple) içindeki verilere erişmek için kullandım. Ortadaki 0 ı değiştirerek istediğimiz linke erişebiliyoruz. Temsil ettikleri şey listeden çekmek istediğimiz elemanın index i değil mi?
Yani daha iyi bir cevap için database in içindekileri bilmemiz lazım diyorsunuz sanırım.