🗄️ sqlite - SQLite Veritabanı

Embedded SQL Database, Transactions, Prepared Statements

42
Fonksiyon
1,167
Satır
36 KB
Boyut

🚀 Hızlı Başlangıç

içe_aktar sqlite

// Veritabanı aç
değişken db = sqlite.open("app.db")

// Tablo oluştur
sqlite.exec(db, "CREATE TABLE IF NOT EXISTS users (
    id INTEGER PRIMARY KEY,
    name TEXT NOT NULL,
    email TEXT UNIQUE,
    age INTEGER
)")

// Insert
sqlite.exec(db, "INSERT INTO users (name, email, age) VALUES ('Ali', 'ali@test.com', 25)")

// Prepared statement (SQL injection koruması)
değişken stmt = sqlite.prepare(db, "INSERT INTO users (name, email, age) VALUES (?, ?, ?)")
sqlite.bind(stmt, ["Ayşe", "ayse@test.com", 30])
sqlite.step(stmt)
sqlite.finalize(stmt)

// Query
değişken sonuçlar = sqlite.query(db, "SELECT * FROM users WHERE age > 20")
her satır içinde sonuçlar için yap
    yazdır(satır["name"] + " - " + satır["email"])
son

// Transaction
sqlite.begin(db)
dene yap
    sqlite.exec(db, "UPDATE users SET age = age + 1")
    sqlite.commit(db)
son yakala hata yap
    sqlite.rollback(db)
    yazdır("Hata: " + hata.mesaj())
son

sqlite.close(db)

📚 Özellikler

💡 Örnekler

User Management System

içe_aktar sqlite

sınıf UserDB yap
    değişken db: Database
    
    fonksiyon yeni(dosya_yolu: yazı) yap
        self.db = sqlite.open(dosya_yolu)
        self.init_schema()
    son
    
    fonksiyon init_schema() yap
        sqlite.exec(self.db, "
            CREATE TABLE IF NOT EXISTS users (
                id INTEGER PRIMARY KEY AUTOINCREMENT,
                username TEXT UNIQUE NOT NULL,
                email TEXT UNIQUE NOT NULL,
                password_hash TEXT NOT NULL,
                created_at INTEGER DEFAULT (strftime('%s', 'now'))
            )
        ")
    son
    
    fonksiyon kullanıcı_ekle(username: yazı, email: yazı, password_hash: yazı) -> Sonuç yap
        değişken stmt = sqlite.prepare(self.db,
            "INSERT INTO users (username, email, password_hash) VALUES (?, ?, ?)")
        
        sqlite.bind(stmt, [username, email, password_hash])
        
        eğer sqlite.step(stmt) ise yap
            değişken id = sqlite.last_insert_id(self.db)
            sqlite.finalize(stmt)
            dön Tamam(id)
        son değilse yap
            sqlite.finalize(stmt)
            dön Hata("Kullanıcı eklenemedi")
        son
    son
    
    fonksiyon kullanıcı_bul(username: yazı) -> Seçenek yap
        değişken stmt = sqlite.prepare(self.db,
            "SELECT * FROM users WHERE username = ?")
        sqlite.bind(stmt, [username])
        
        eğer sqlite.step(stmt) ise yap
            değişken user = yap
                "id": sqlite.column_int(stmt, 0),
                "username": sqlite.column_text(stmt, 1),
                "email": sqlite.column_text(stmt, 2),
                "password_hash": sqlite.column_text(stmt, 3),
                "created_at": sqlite.column_int(stmt, 4)
            son
            sqlite.finalize(stmt)
            dön Bazı(user)
        son değilse yap
            sqlite.finalize(stmt)
            dön Hiç
        son
    son
    
    fonksiyon tüm_kullanıcılar() -> Dizi yap
        dön sqlite.query(self.db, "SELECT id, username, email FROM users")
    son
    
    fonksiyon kullanıcı_sil(id: tamsayı) -> bool yap
        değişken stmt = sqlite.prepare(self.db, "DELETE FROM users WHERE id = ?")
        sqlite.bind(stmt, [id])
        değişken başarılı = sqlite.step(stmt)
        sqlite.finalize(stmt)
        dön başarılı
    son
son

// Kullanım
değişken user_db = UserDB.yeni("users.db")
user_db.kullanıcı_ekle("berk_dev", "berk@example.com", "hash_buraya")

değişken kullanıcı = user_db.kullanıcı_bul("berk_dev")
eğer kullanıcı ise yap
    yazdır("Kullanıcı bulundu: " + kullanıcı.değer()["email"])
son

Transaction ile Batch Insert

içe_aktar sqlite, csv

fonksiyon csv_import(db: Database, csv_dosya: yazı, tablo: yazı) yap
    değişken satırlar = csv.oku(csv_dosya)
    
    sqlite.begin(db)
    
    dene yap
        değişken stmt = sqlite.prepare(db,
            "INSERT INTO " + tablo + " VALUES (?, ?, ?)")
        
        her satır içinde satırlar için yap
            sqlite.bind(stmt, satır)
            sqlite.step(stmt)
            sqlite.reset(stmt)
        son
        
        sqlite.finalize(stmt)
        sqlite.commit(db)
        yazdır("Import başarılı: " + satırlar.uzunluk().yazıya() + " satır")
    son yakala hata yap
        sqlite.rollback(db)
        yazdır("Import başarısız: " + hata.mesaj())
    son
son

değişken db = sqlite.open("data.db")
csv_import(db, "users.csv", "users")

← Tüm Modüller