Python sql'den çekilen veriyi parantezsiz yazma

Veri tabanından veriyi çekiyorum ancak print kodunu kullandığımda şu şekilde yazdırıyor.

[[('https://www.trendyol.com/fragman-yayinlari/2023-tyt-tempo-paragraf-yeni-nesil-soru-bankasi-2-tyt-turkce-denemesi-ilaveli-p-88678242?boutiqueId=613562&merchantId=585055&sav=true',), ('https://www.hepsiburada.com/gamepower-ogre-rgb-mekanik-kirmizi-switch-klavye-p-hbv00000pzbwz',)]]

Bunları nasıl parantezler olmadan yazdırabilirim ?

kod:

sorgu = "select urunLink from kayıt"
    islem.execute(sorgu)
    veriler = islem.fetchall()
    islem.fetchall()
    linkler.append(veriler)
    print(linkler)

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).

1 Beğeni

Zaten bir değişkene atamışsın, ikinci bir fetchall gereksiz olmuş.

Burada kodun tamamı olmadığı için bir listeye attığını varsayıyorum. İkinci parantezler de oradan geliyor.

Velhasıl, hepsini alt alta yazdıracaksan for döngüsünü veriler üzerinde kurmalısın. Çünkü veriler değişkeni tuple veriler içeren bir listeden ibaret.

2 Beğeni

Linkler listesi boş yani [] şeklinde

hepsini alt alta yazdırmayacağım, listenin içindeki verileri tek tek almak istiyorum

Sanırım yaptım.

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.

Umarım azıcık da olsa açıklayıcı olmuştur.

1 Beğeni

Sorunu Çözdüm teşekkürler.

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.

1 Beğeni

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.

Evet, aynen.


Gerci koda dikkatli bakmamisim, listelerin nereden geldigi belliymis. (Soruya sorunun sahibinden daha cok ozen gostermeme gibi bir sorunum var.)

1 Beğeni