python dersleri

Python ile Veritabanı İşlemleri (SQLite)

Merhaba Arkadaşlar,

Mobilhanem.com da Python Derslerine Python ile Veritabanı İşlemleri (SQLite) yazısı ile birlikteyiz. Bu yazı da Python ile veritabanında CRUD işlemlerini yapacağız.

Neden SQLite?

Neden SQLite? Sorusuna cevap vermeden önce SQLite nedir sorusuna cevap verelim.

SQLite;   C ve C++ programlama dilleriyle yazılmış açık kaynaklı bir Veritabanı Yönetim Sistemidir. Ayrıca SQLite sunucu yazılımı ve yapılandırma gereksinimi olmayan bir SQL veritabanı yönetim sistemidir.

Şimdi Neden SQLite sorusuna cevap verelim. SQLite’ı diğer veritabanı motorlarından ayıran başlıca özellikle basit olmasıdır.

  • Basit Yönetim
  • Basit İşletim
  • Daha büyük programların içine basit entegrasyon
  • Basit sürdürülebilirlik
  • Her şeyden önce Sqlite Python’un 2.5 sürümlerinden bu yana bu dilin bir parçasıdır. Dolayısıyla eğer kullandığınız Python sürümü 2.5 veya üstü ise Sqlite’ı Python’daki bir modül gibi içe aktarabilir ve kullanmaya başlayabilirsiniz.

İşte bu yüzden SQLite birçok kullanıcı için küçük ve hızlı olması nedeniyle tercih edilmektedir.

SQLite veritabanı görsel olarak incelemek veya herhangi bir işlemi manuel olarak yapmak için SQLite DB Browser bu adresten bilgisayarınıza uygun olanı indirebilirsiniz. Merak etmeyin kurulumu çok basittir.

İlk önce SQLite3 modülünü ekleyelim.

import sqlite3

Python da SQLite veritabanını eklemek işte bu kadar basit. Şimdi veritabanını eklediğimize göre  veritabanı bağlantısı yapalım bunun içinde  connect()  metodunu kullanıyoruz.

database_connect = sqlite3.connect("sınıf.db")

Bu şekilde veritabanı bağlantısını yapmış oluyoruz. Eğer veritabanı yoksa sınıf.db adında yeni bir veritabanı oluşturmuş olacağız.

Şimdi üzerinde işlem yapacağımız veritabanı için  bir cursor(imleç veya işaretleyici) oluşturuyoruz. Bunun için cursor() metodunu kullanıyoruz.

imlec = database_connect.cursor()

Şimdi veritabanı işlemlerini yapalım.

CRUD İşlemleri

NOT: SQL ile ilgili Temel Komutlar ve Örnekler için veya Sıfırdan SQL öğrenmek için tıklayınız.

Create

Tablo oluşturmak için önceden oluşturduğumuz imleç nesnesini  kullanarak execute() metodunu ile tablo üzerinde işlem yapabiliriz. O zaman hemen oluşturalım tablomuzu.

imlec.execute("""CREATE TABLE ogrenciler(ogr_no INTEGER ,ogr_adi TEXT,ogr_soyadi TEXT,ogr_bolum TEXT)""")

Dikkat ederseniz sınıf.db isminde bir veritabanı oluşturmuş olduk. Şimdi veritabanımızı açalım. Bunun için daha önce bilgisayarımıza kurduğumuz SQLite DB Browser kullanıyoruz.

Gördüğünüz gibi öğrenciler tablomuzu oluşturduk. Şimdi oluşturduğumuz tabloya veri ekleyelim.

imlec.execute("""INSERT INTO ogrenciler VALUES(12,"Mustafa","GEZEN","Bilgisayar Mühendisliği") """)

Dikkat ederseniz oluşturduğumuz veritabanındaki sıralama ile aynı şekilde ekliyoruz. Şimdi programı çalıştıralım.

import sqlite3

database_connect = sqlite3.connect("sınıf.db")

imlec = database_connect.cursor()

imlec.execute("""CREATE TABLE ogrenciler(ogr_no INTEGER ,ogr_adi TEXT,ogr_soyadi TEXT,ogr_bolum TEXT)""")
imlec.execute("""INSERT INTO ogrenciler VALUES(12,"Mustafa","GEZEN","Bilgisayar Mühendisliği") """)

sqlite3.OperationalError: table ogrenciler already exists.

Şu şekilde bir hata aldık. Bu hata bize zaten ogrenciler tablosunun olduğunu söylüyor. O zaman bizde eğer bu isimde bir tablomuz varsa yeni tablo oluşturma eğer yoksa oluştur tarzında bir kontrol yapmamız gerekiyor. Bunun için SQL de olan şu ifadeyi tablo oluştururken kullanıyoruz. “IF NOT EXISTS”

Hemen kodumuzu güncelleyelim.

imlec.execute("""CREATE TABLE IF NOT EXISTS ogrenciler(ogr_no INTEGER ,ogr_adi TEXT,ogr_soyadi TEXT,ogr_bolum TEXT)""")

Şimdi programı çalıştıralım ve veritabanımıza bakalım.

Gördüğümüz gibi veritabanımız hala boş  Çünkü biz veritabanı üzerinde yaptığımız değişiklikleri kaydetmedik bunun için veriler eklenmedi.

Biz veritabanı üzerinde yaptığımız değişiklikleri kaydetmek için commit() komutunu kullanıyoruz. Son olarak unutmadan veritabanını kapatıyoruz. Bunun içinde close() metodunu kullanıyoruz.

import sqlite3

database_connect = sqlite3.connect("sınıf.db")

imlec = database_connect.cursor()

imlec.execute("""CREATE TABLE IF NOT EXISTS ogrenciler(ogr_no INTEGER ,ogr_adi TEXT,ogr_soyadi TEXT,ogr_bolum TEXT)""")
imlec.execute("""INSERT INTO ogrenciler VALUES(12,"Mustafa","GEZEN","Bilgisayar Mühendisliği") """)
database_connect.commit()
database_connect.close()

Şimdi tablomuza bakalım.

Eğer her seferinde veritabanı kapatmakla uğraşmak istemiyorsanız otomatik kapatmasını istiyorsanız şu yöntemi kullanabilirsiniz.

with sqlite3.connect("sınıf.db") as database_connect :

    imlec = database_connect.cursor()
    imlec.execute("""CREATE TABLE IF NOT EXISTS ogrenciler(ogr_no INTEGER ,ogr_adi TEXT,ogr_soyadi TEXT,ogr_bolum TEXT)""")
    imlec.execute("""INSERT INTO ogrenciler VALUES(12,"Mustafa","GEZEN","Bilgisayar Mühendisliği") """)
    database_connect.commit()

Kesinlikle size bu yöntemi kullanmayı tavsiye ederim.

Read

Yukar da veritabanı nasıl oluştulur ve nasıl veri eklenir onu öğrendik sıra geldi verileri okumaya bunun için temel SQL komutu olan “SELECT *FROM tablo_adı” şeklinde verilerimizi okuyoruz.

imlec.execute("""SELECT *FROM ogrenciler""")

Şimdi imleç nesnemiz öğrenciler tablosunu okuyacak peki nasıl okuma işlemi yapacak bunu belirtmemiz lazım. Bunun için bazı komutlarımız var.

fetchall() Metodu:         Tablodaki bütün verileri okur

fetchmany() Metodu:  Tablodan istediğimiz kadar veri okumayı sağlar

fetchone() Metodu:      Tablodan verileri tek tek okumayı sağlar

Tüm verileri okuyalım bunun için ben okuduğum verileri öğrenciler değişkenine atıyorum. Ve ekrana yazdıralım.

ogrenciler = imlec.fetchall()
print(öğrenciler)

Çıktımıza bakalım;

[(12, 'Mustafa', 'GEZEN', 'Bilgisayar Mühendisliği'), (10, 'Ahmet', 'KARA', 'Elektrik Elektronik Mühendisliği'), (5, 'Ayşe', 'DEREN', 'Matematik Bölümü'), (23, 'Ayhan', 'GEZGİN', 'İstatistik Bölümü'), (16, 'Can', 'ATEŞ', 'Yazılım Mühendisliği'), (36, 'Canan', 'Kayalı', 'Bilgisayar Mühendisliği'), (12, 'Mustafa', 'GEZEN', 'Bilgisayar Mühendisliği')] Gördüğünüz gibi tüm verileri bir listenin içinde okuduk. Dilerseniz şimdi daha düzgün şekilde okuyalım. (12, 'Mustafa', 'GEZEN', 'Bilgisayar Mühendisliği')(10, 'Ahmet', 'KARA', 'Elektrik Elektronik Mühendisliği')(5, 'Ayşe', 'DEREN', 'Matematik Bölümü')(23, 'Ayhan', 'GEZGİN', 'İstatistik Bölümü')(16, 'Can', 'ATEŞ', 'Yazılım Mühendisliği')(36, 'Canan', 'Kayalı', 'Bilgisayar Mühendisliği')

Gördüğünüz gibi tüm verileri bir liste içinde okuduk. Dilerseniz verileri biraz daha düzgün şekilde okuya biliriz.

ogrenciler = imlec.fetchall()
for ogrenci in ogrenciler:
    print(ogrenci)
(12, 'Mustafa', 'GEZEN', 'Bilgisayar Mühendisliği')
(10, 'Ahmet', 'KARA', 'Elektrik Elektronik Mühendisliği')
(5, 'Ayşe', 'DEREN', 'Matematik Bölümü')
(23, 'Ayhan', 'GEZGİN', 'İstatistik Bölümü')
(16, 'Can', 'ATEŞ', 'Yazılım Mühendisliği')
(36, 'Canan', 'Kayalı', 'Bilgisayar Mühendisliği')

Biraz daha verileri düzgün okumuş olduk. Şimdi tablodan sadece Bilgisayar Mühendisliği okuyanları okuyalım.

imlec.execute("""SELECT *FROM ogrenciler WHERE ogr_bolum = 'Bilgisayar Mühendisliği' """)
ogrenciler = imlec.fetchall()

for ogrenci in ogrenciler:
    print(ogrenci)
(12, 'Mustafa', 'GEZEN', 'Bilgisayar Mühendisliği')
(36, 'Canan', 'Kayalı', 'Bilgisayar Mühendisliği')

Update

SQL dilinde veri güncelleme işlemi “UPDATE ” ifadesi ile yapılır.

Updata ifadesinin syntax’ı:

UPDATE tablo_adi SET = sütun1 = yeni_değer, sütun2 = yeni_değer WHERE koşul

Hemen kodlarımızı yazalım.

 imlec.execute("""UPDATE ogrenciler SET ogr_no = 15 WHERE ogr_bolum = 'Yazılım Mühendisliği' """)

Yazılım Mühendisliği öğrencilerinin numarasını 15 yaptık. Güncelleme işlemini de yapmış olduk.

Delete

Şimdi veritabanımızda verileri silme işlemi yapalım. SQL dilinde veri silme işlemi “DELETE” ifadesi ile yapılır.

Delete ifadesi syntax’ı:

DELETE FROM tablo_adi WHERE koşul

Hemen yapalım.

imlec.execute("""DELETE FROM ogrenciler WHERE ogr_bolum = 'Bilgisayar Mühendisliği' """)

Gördüğünüz gibi Bilgisayar Mühendisliği okuyan öğrencileri tablodan sildik.

Mobilhanem.com da Python ile Veritabanı İşlemleri(SQLite) dersinin  sonuna geldik bir sonraki yazımızda Pyhon ile Veritabanı İşlemleri(MySQL) dersini işleyeceğiz. Eksik yada yanlış gördüğünüz yada anlamadığınız yerler için  sayfanın altında yorum bölümünden yada soru-cevap kısmından sorabilirsiniz.

Bütün Python derslerine buradan ulaşabilirsiniz.

64

Cahit İşleyen

Data Scientist at @Embedica.ai
Python ve Linux sever.
Çay tiryakisi

15 Yorum

Haftalık Bülten

Mobilhanem'de yayınlanan dersleri haftalık mail almak ister misiniz?