Geçtiğimiz bölümlerde veri tabanına veri eklemeyi gördük ve şu anki veri tabanımız şu şekilde:

Şimdi, kod yardımıyla bu verileri nasıl görüntüleyebileceğimizi öğreneceğiz. Ancak, başlamadan önce ne anlama geldiğini bilmemiz gereken bazı ifadeler mevcuttur;
*: Yıldız ifadesi 'all/her şey' anlamına gelir.
SELECT: Kelimenin Türkçe karşılığı 'seçmek' şeklindedir.
FROM: Kelimenin Türkçe karşılığı '-dan, -den' şeklindedir. Örneğin 'select from the class'; 'sınıftan seç'.
WHERE: Kelimenin Türkçe karşılığı 'nerede?' şeklindedir.
Bizler, veri tabanından veri çekeceğimiz zaman SELECT komutunu her zaman kullanırız ve bu komut sayesinde istediğimiz şekilde verileri seçip çıkarabiliriz. Sonrasında gelebilecek olan iki parametremiz mevcuttur. Bunlardan biri '*', diğeri ise sütun ismidir. Örneğin SELECT * FROM contacts yahut SELECT name FROM contacts.
Eğer daha spesifik bir bilgi istiyorsanız; örneğin yalnızca adı Worm olanları görüntülemek isterseniz yine aynı şekilde gidip sonuna bazı eklemeler yapmalısınız. İlk adımımız;
SELECT * FROM contacts WHERE name='Worm'
şeklinde olmalıdır. Bu noktada söylediğimiz şey aslında şu şekildedir: "contacts isimli tablodan her şeyi seç ve bana name değişkeninin değerinin Worm olduğu satırları getir".
Şimdi, hem biraz pratik yapalım hem de kodlara gözümüz alışsın.
Bunun için ilk önce getInfo() şeklinde bir fonksiyon açıyorum ve bu fonksiyonun içerisine execute() ile bir sorgu yazıyorum.

Bu noktada myCursor.execute("") içerisine SELECT * FROM contacts emrini verdik. Bu komut sayesinde Python, contacts isimli tablodan her şeyi seçecektir. Ancak, bu kod yeterli olmayacaktır. Bu komutla beraber kullandığımız fetchall() fonksiyonu sayesinde bunları görüntüleme işlemini yapacağız. Zaten 'Fetch All' kalıbının karşılığı 'Hepsini getir' şeklindedir. Nasıl olduğunu görelim.

myCursor.fetchall() şeklinde bir kod yazdık. Ancak, fetchall() fonksiyonu bir liste döndürdüğü için ve bizim bunu ekrana vermemiz gerektiği için bu kodu bir değişkene atayıp o değişkeni return edebiliriz.

myCursor.fetchall() komutunu results isminde bir değişkene atayıp bunu return ettim. İsterseniz çıktının nasıl olduğuna bakıp basit bir özet yapalım.

Gördüğünüz üzere bu 3 satır sayesinde verilerin hepsini çekebildik. Ayrıca dikkat edelim; genel bir liste var ve satırlarımız bu listenin içerisinde birer Tuple içerisinde tutuluyor. O zaman listelerin metotlarını kullanabiliriz diye düşünüyorum.

Elbette, gayet başarılı olduk. Ayrıca dikkat ederseniz commit() yapmadık çünkü veri tabanını etkileyecek bir şey yapmadık. Yalnızca verileri ekrana verdik. Peki, SELECT * FROM contacts komutu zaten verileri çekiyorsa fetchall() neden var?

Sqlite içerisine gelip 'Execute SQL' kısmına geçerseniz burada dilediğiniz bir SQL sorgusunu çalıştırabilirsiniz. Dikkat ederseniz burada yalnızca SELECT * FROM contacts dedim ve karşıma aynı sonuç geldi. Bu noktada Python ile SQL arasında oluşan minik fark, fetchall() ile tamamlanır. Yani normal şartlarda bir SQL sorgusu yazacağınız zaman fetchall() ve benzeri fonksiyonları kullanmanıza gerek yoktur; yalnızca sorgunun kendisini yazmanız yeterlidir. Ancak, Python kullanacaksanız bunu yapmanız elzemdir.
Şimdi, blogun başında sözüne ettiğim sorguları da görelim. Ondan sonra fetchall() fonksiyonunun alternatiflerini de göreceğiz.

SELECT name FROM contacts sorgusuyla da name değişkenlerinin değerlerini yazdırdık. Eğer oraya name yerine örneğin number yazmış olsaydınız number değişkeninin değerlerini göreceksinizdir. Dilerseniz bunu SQL sorgusu olarak direkt olarak deneyelim.

Bir de spesifik bir sorgu yapmayı görelim.

SELECT * FROM contacts dedikten sonra ona, WHERE name='' diyerek belli bir yeri, WHERE name='Worm' diyerek ise belli bir kaydı belirtiyorum.
Başka bir örnek yapalım.

Aynı mantık ile surname değişken değeri X olan satırı getirmesini istedim.
Sözüne ettiğim sorguları gördüğümüze göre fetchall() fonksiyonunun alternatiflerine de bakalım ve blogu sonlandıralım.
fetchmany()Bu fonksiyon, içerisine vereceğiniz tam sayı kadar değer döndürecektir. Örneğin 20 satırlık bir veri tabanınız varsa ve siz bu 20 satırdan yalnızca 12 tanesini görüntülemek istiyorsanız fetchmany(12) demeniz yeterli olacaktır. Basit bir örnek görelim.
Bunun için veri tabanıma 3 yeni kişi ekledim:

Şimdi, fetchmany() fonksiyonu ile bu beş kişinin üçünü alalım.

fetchmany(3) dedim ve ilk üç satır/kayıt karşıma getirildi. Ancak, sorgumu düzelttim; ona dikkat edin. SELECT * FROM contacts WHERE name='Worm' şeklinde bir sorgu ile beraber fetchmany(3) dersem karşıma, veri tabanında name değeri Worm olan 3 kişi getirecektir.
fetchone()Bu, adından da anlayacağınız üzere tek bir sonuç döndürüyor. Hemen görelim.

myCursor.fetchone() dedim ve bana ilk kaydı getirdi. Bu fonksiyon içerisine herhangi bir değer almaz. Eğer değer verirseniz TypeError alırsınız. Görelim.

Yayınlanma Tarihi: 2023-01-25 11:13:22
Son Düzenleme Tarihi: 2023-01-28 13:19:10