Veri Tabanı İşlemleri | Veri Girişi Yapmak

Bir önceki bölümde bir veri tabanı oluşturmayı ve SQL komutu çalıştırmayı öğrendik. Önceki bölümde kodlarımız şu şekildeydi:

Kodu hem daha güzel hâle getirmek hem de ileriki konuların birbiriyle karışmaması adına burada fonksiyonları kullanalım diyorum. Bunun için CREATE TABLE olan komutu CREATE TABLE IF NOT EXISTS ile değiştiriyor ve execute() ettiğimiz komutları bir fonksiyon içerisinde topluyorum:

Gördüğünüz üzere şimdi daha sağlıklı bir görünüm mevcut.

Şimdi, blogun asıl konusuna girelim yani veri girişi yapmayı öğrenelim.

İlk önce, daha önce oluşturduğumuz veri tabanını açıp oradaki 'Browse Data' seçeneğine geliyoruz:

Burada, daha önce oluşturduğumuz tabloyu göreceksinizdir. Dilerseniz veri girişini buradan, el ile yapabilirsiniz. Ancak, biz bu işi kodlar yardımıyla yapacağız.

Bunu yapabilmemiz için iki kalıp koda ihtiyacımız var; biri INSERT INTO, diğeri ise VALUES şeklinde. Bu noktada INSERT INTO ifadesinden sonra tablomuzun ismini; VALUES ifadesinden sonra da girilecek olan değerleri gireceğiz. Hemen bakalım.

Lütfen dikkat edelim. Bu noktada biz, bir komut çalıştıracağımız için imlecimizi yani myCursor değişkenini kullandık. Sonrasında commit() diyerek veri tabanını güncelledik. Bunları biliyorsunuz. Komuta baktığımız zaman ilk önce söz dizimimiz şu şekildedir:

INSERT INTO <tablo adı> VALUES(<sütun isimlerine karşılık gelen değer>)

Burada VALUES kısmında aklınız biraz karışabilir çünkü oradaki her şey string gibi görünüyor. Ancak, dikkat edelim; id değişkeninin veri tipi INT idi. Bu noktada biz onu, '1' şeklinde yazmak yerine sadece 1 olarak yazdık. Geri kalan değerler hep TEXT veri tipinde olduğu için onları 'iki tırnak arasına' yazdık. Burası, dikkat etmediğinizde size türlü sorunlar çıkarabilecek bir noktadır.

class yapılarından hatırlarsınız; self parametresinin yanına koyduğumuz özelliklerin değerlerini, instance oluştururken sırasıyla giriyorduk. Burada da hangi değişkeni (örn. name TEXT,...) nasıl bir sıraya koyduysanız değerleri de o sıraya göre çağırmanız gerekir.

entry() isimli bir fonksiyon açıp execute() ve commit() ile gerekli işlemleri yaptıktan sonra entry() fonksiyonunu çağırdık ve işlemimiz tamamlandı. Dilerseniz veri tabanını görelim.

'Browse Data' kısmına geldiğinizde kırmızı daire içerisine aldığım ikona tıklarsanız tablolarınız güncellenecektir. Tablonuzu güncelledikten sonra girdiğiniz değerlerin sırasıyla yerleştirildiğini göreceksinizdir. 

Peki, diyelim ki siz bir rehber uygulaması yapacaksınız ve bu verileri kullanıcıdan almak istiyorsunuz. O zaman nasıl bir yol izlerdiniz? Yavaştan girelim.

İlk önce, id isimli değişkeni sildiğimi bilmenizi istiyorum. Normal şartlarda id değişkeninin otomatik olarak artmasını istediğimizde AUTOINCREMENT ifadesini kullanıyoruz. Ancak, konumuz şu an bunu kapsamadığı için bunu silip öyle devam edeceğim.

Daha önceden hatırlayacağınız üzere girdi alabilen bir fonksiyon yapısı kullandım. Bu sayede gerekli bilgileri kullanıcıdan alabileceğim. Peki, INSERT INTO contacts dedikten sonra VALUES() kısmına ne yazacağız? Sonuçta biz, kullanıcının nasıl bir girdi vereceğini bilmiyoruz; nasıl olacak?

Dikkat edelim. INSERT INTO contacts dedikten sonra VALUES() kısmına kaç adet argümanımız varsa o kadar soru işareti bırakıyoruz. Yani yapı şu şekilde olmalıdır: VALUES(?, ?, ?). Bunu yaptıktan hemen sonra tırnak işaretlerinin dışına çıkıp o soru işaretlerine denk gelen değişkenleri giriyoruz. Sonuç olarak yapımız bu şekilde olmalı:

execute("... VALUES(?, ?, ?)", (name, surname, number))

Bu sayede kullanıcıdan aldığımız değerleri veri tabanına işleyebileceğiz. İsterseniz kodu çalıştırıp ne olacağını görelim.

İşlemlerimiz gayet başarılı bir şekilde gerçekleşti. Dikkat ederseniz Sqlite'ın zaten bir ID sistemi mevcut. Ancak, elbette ID sistemini kendiniz yazmak zorunda kalabilirsiniz. Bunları ilerleyen bölümlerde göreceğiz.


Yayınlanma Tarihi: 2023-01-23 22:07:36

Son Düzenleme Tarihi: 2023-01-28 13:19:04