# PYTHON İLE VERİ TABANI İŞLEMLERİ


# --------------------------

# VERİ TABANINA BAĞLANMA

# SQLITE3 modeli dahil ediliyor.

import sqlite3

# Veri tabanına bağlanılıyor. Eğer yoksa otomatik olarak oluşturulur.

baglan = sqlite3.connect("kutuphane.db")

# İşlem için veritabanı hazırlanıyor.

imlec = baglan.cursor()


# --------------------------

# Veritabanı için gerekli sql kodları hazırlanıyor.

imlec.execute("""

CREATE TABLE IF NOT EXISTS kitaplar (

    id INTEGER PRIMARY KEY AUTOINCREMENT,

    ad text NOT NULL,

    yazar TEXT NOT NULL,

    sayfa_sayisi INTEGER

)

""")

# sql kodları çalıştırılıyor.

baglan.commit()


# --------------------------

# Veritabanına veri ekleme

# Tekli Veri Ekleme

imlec.execute("INSERT INTO kitaplar (ad, yazar, sayfa_sayisi) VALUES (?, ?, ?)",

              ("Nutuk", "Mustafa Kemal Atatürk", 543))


# Çoklu Veri Ekleme

yeni_kitaplar = [

    ("Saatleri Ayarlama Enstitüsü", "Ahmet Hamdi Tanpınar", 382),

    ("İnce Memed", "Yaşar Kemal", 436),

    ("Kürk Mantolu Madonna", "Sabahattin Ali", 160)

]


imlec.executemany("INSERT INTO kitaplar (ad, yazar, sayfa_sayisi) VALUES (?, ?, ?)", yeni_kitaplar)

baglan.commit()


# --------------------------

# Veritabanından veri okuma işlemi.

# Tüm verileri çekme

imlec.execute("SELECT * FROM kitaplar")

tum_kitaplar = imlec.fetchall()


for kitap in tum_kitaplar:

    print(f"ID: {kitap[0]} | Kitap: {kitap[1]} | Yazar: {kitap[2]} | Sayfa: {kitap[3]}")


# --------------------------

# Veritabanından veri silme işlemi.

imlec.execute("DELETE FROM kitaplar WHERE id = ?", (1,))

baglan.commit()


# --------------------------

# Veritabanı bağlantısı kapatma.

# Veri tabanı ile iş bittiğinde mutlaka bağlantı kapatılmalı yoksa açık kalır ve gereksiz işlem gücü harcanır.

baglan.close()